我正在使用swfObject将Flash Player嵌入我的应用程序中。有时,当尝试与嵌入式Flash对象通信时,我在FireFox中看到错误(仅在IE或Chrome中看不到)。错误显示“ SetVariable不是函数”。导致此错误的代码刚刚执行完毕,现在显示此错误。如果我重新加载页面并重新运行,很可能这种情况不会再次发生。
我在网上看到有关FF无法与SetVariable一起正常工作的报道,但没有任何解决办法。显然,swfObject应该隐藏所有这些,但不是。
这是我的代码:
...
var flashvars=...
var params=...
var attributes = {};
attributes.id = "my_player";
if( swfobject.hasFlashPlayerVersion("9.0.0") )
{
swfobject.embedSWF("my_player_js.swf", "my_player_holder", "1", "1", "9.0.0", "", flashvars, params, attributes );
}
....
document.getElementById("my_player").SetVariable( "method:stop", "");
FF上的最后一行有时会导致“ SetVariable不是函数”错误。
有什么建议在哪里看?
最佳答案
您应该改用ExternalInterface,它比SetVariable健壮得多(速度较慢,但除非确实需要速度,否则应使用它)
通常导致这种情况的一种常见情况是,尝试在加载swf之前调用SetVariable调用。通常,将swf调出到页面并告诉js准备好在尝试调用方法之前可以接收到调用是更安全的方法。
既然您说“导致此错误的代码在片刻之前就已执行完毕”,那么我认为以上内容可能不是您的问题,但是还是值得检查的。也许如果您正在修改页面上的swf,浏览器正在尝试重新加载它,并且导致它一次消失几毫秒?