我正在使用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,浏览器正在尝试重新加载它,并且导致它一次消失几毫秒?

10-06 01:05