弹出Facebook对话框后,访问SWF并从Facebook中的Javascript调用Actionscript函数

时间:2015-06-23 11:58:37

标签: javascript facebook flash internet-explorer starling-framework

我正在使用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");  

任何帮助将不胜感激! :)

1 个答案:

答案 0 :(得分:0)

我通过使用以下css文件覆盖Facebook在Internet Explorer中的swf隐藏行为来解决这个问题:

*::-ms-backdrop,#mySWF{
    visibility: visible !important;
}    

我将它留在这里,因为它可能会帮助别人。看起来Internet Explorer并不喜欢执行对未显示的swf obj的javascript调用,并且如果在对一个隐藏的swf进行一次调用后再次使其可见,IE继续无法执行它

不要让swf对象被隐藏,一切正常:)