我正在使用Flash和Starling开发Facebook游戏,大多数情况下,当用户在IE上打开Facebook对话框(共享/提要/发送)时,我将失去在SWF对象上进行Actionscript调用的能力的JavaScript。
在对话框出现之前,如果我使用这样的东西:
swfObj = document.getElementById('mySWF');
swfObj.talkToClient();
它工作正常,在显示对话框后,我开始收到此错误:
Object doesn't support property or method 'talkToClient'
好像IE忘记了该元素是一个SWF对象,或者至少忘记了SWF对象的回调。
我使用带有这些值的swfobject嵌入Flash:
var swfVersionStr = "14";
var xiSwfUrlStr = "playerProductInstall.swf";
var flashvars = {};
var params = {};
params.quality = "high";
params.bgcolor = "#000000";
params.allowscriptaccess = "always";
params.allowfullscreen = "true";
params.allowNetworking = "all";
params.menu = "false";
params.wmode = "direct";
var attributes = {};
attributes.id = "mySWF";
attributes.name = "mySWF";
attributes.align = "middle";
swfobject.embedSWF(
"index.swf", "flashContent",
"827", "620",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes, swfCallback);
swfobject.createCSS("#flashContent", "display:block;text-align:left");
任何帮助将不胜感激! :)
答案 0 :(得分:0)
我通过使用以下css文件覆盖Facebook在Internet Explorer中的swf隐藏行为来解决这个问题:
*::-ms-backdrop,#mySWF{
visibility: visible !important;
}
我将它留在这里,因为它可能会帮助别人。看起来Internet Explorer并不喜欢执行对未显示的swf obj的javascript调用,并且如果在对一个隐藏的swf进行一次调用后再次使其可见,IE继续无法执行它
不要让swf对象被隐藏,一切正常:)