Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript swfobject、FB.ui回调、AS3外部接口和IE无法正常工作_Javascript_Actionscript 3_Facebook Graph Api - Fatal编程技术网

Javascript swfobject、FB.ui回调、AS3外部接口和IE无法正常工作

Javascript swfobject、FB.ui回调、AS3外部接口和IE无法正常工作,javascript,actionscript-3,facebook-graph-api,Javascript,Actionscript 3,Facebook Graph Api,我使用swfobject加载了我的swf。在AS3中,我打了一个电话,调用FB.ui来显示支付窗口。在这一点上,一切正常。 支付完成后,FB.ui调用回调,该回调应该回调到AS3。我得到了对swf对象的引用,但实际的方法调用失败,因为对象不支持属性或方法 我已经阅读了每一篇关于这个的帖子,但是找不到任何帮助。在我看来,getElementById没有返回正确的对象 这只发生在IE中。Chrome和FireFox工作正常 var attributes = {};

我使用swfobject加载了我的swf。在AS3中,我打了一个电话,调用FB.ui来显示支付窗口。在这一点上,一切正常。 支付完成后,FB.ui调用回调,该回调应该回调到AS3。我得到了对swf对象的引用,但实际的方法调用失败,因为对象不支持属性或方法

我已经阅读了每一篇关于这个的帖子,但是找不到任何帮助。在我看来,getElementById没有返回正确的对象

这只发生在IE中。Chrome和FireFox工作正常

var attributes = {};            
        attributes.id = "game";
        attributes.name = "game";
        attributes.align = "middle";
        swfobject.embedSWF(
            "game.swf", "flashContent",
            "800", "600",
            swfVersionStr, xiSwfUrlStr,
            flashvars, params, attributes);
        // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
        swfobject.createCSS("#flashContent", "display:block;text-align:left;");

.....

FB.ui(obj, function(data) { 

          if(!data) {
        alert("There was an error processing your payment. Please try again!");              
        return;
          }

          //  alert('called back order');

          // IMPORTANT: You should pass the data object back to your server to validate
          // the contents, before fulfilling the order.
            var gameVar = document.getElementById("game");
            //alert(gameVar);
            //console.log(Object.prototype.toString.call(gameVar));
        //alert(gameVar.purchaseCallback);
          gameVar.purchaseCallback(data);
          //console.log("Payment verification complete");


        });

          //handle errors here
         //alert('some error');

         return false;
    }
更奇怪的是,如果我在页面中添加以下内容,单击链接就可以了。 功能测试(){ var game=document.getElementById(“游戏”); 警报(游戏。purchaseCallback); }
测试

,以确定问题在于可见性。由于FB.ui会在显示FB.ui对话框时更改对象的可见性,然后在处理该对话框时将其更改回原来的状态,因此flash应用程序会丢失其外观

为了纠正这一点,我补充说:

<style>
    #game {
        visibility: visible !important;
    }
</style>

当我的谷歌搜索发现有人和我的脑袋碰到的问题完全一样时,我非常激动!这个解决方案对我不起作用(可能是因为我必须使用wmode:direct,而且swf后面会出现支付对话框),但我认为这会引导我找到一个新的解决方案。如果其他人在尝试解决Stage3D游戏的这个问题时在这里遇到困难,这篇帖子为我提供了完整的解决方案:@daniel schaffer roguenet和jbassking提到的解决方案不适合你吗?@akmozo不,是的事实上,我将悬赏jbassking的答案,因为它帮助我解决了困扰我的应用程序几个月的问题!所以不要让你在24小时内奖励奖金。@Danielschafer好的,伙计,我没有看到“一个或多个答案是模范的,值得额外奖励。”;)
params.wmode = "opaque";