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