尝试从JS访问Flash电影在FF中工作,但不在IE中

时间:2009-12-29 22:11:27

标签: javascript html flash actionscript

我正在设置基于Flash的MP3播放器控件(WordPress Standalone Player的独立版本)。我有一个打开玩家的多个窗口的情况。一个窗口打开另一个窗口,因此我可以使用window.opener属性。

打开子窗口时,我想以编程方式在父窗口中静音音频播放器。

这适用于Firefox,但不适用于IE 7和8。我对Flash / Javascript交互知之甚少,而且我被卡住了。我没有收到任何错误消息。

为此,播放器SWF对象具有setVolume()和close()函数。这些函数没有在Javascript中的任何地方定义,所以我猜这些函数是由Flash对象提供的。我在播放器的Flash source code中找到以下几行支持:

if (ExternalInterface.available) {
 ExternalInterface.addCallback("load", Application, Application.ei_loadFile);
 ExternalInterface.addCallback("close", Application, Application.ei_closePlayer);
 ExternalInterface.addCallback("open", Application, Application.ei_openPlayer);
 ExternalInterface.addCallback("setVolume", Application, Application.ei_setVolume);    

在Firefox中,这有效:

if (typeof(AudioPlayer) != "undefined") 
var player = AudioPlayer.getPlayer("audioplayer_1");  // This shows up as 
                                                      // the player SWF object 
                                                      // in Firebug

if (player)
 if (typeof(player.setVolume) == "function")
  player.close();  // This works in FF but not in IE

但在IE中却没有。这是因为IE中没有回调吗?或者我还有什么需要做的吗?

1 个答案:

答案 0 :(得分:2)

如果它在FF中工作但不在IE中工作,则问题可能在JavaScript代码中。 ExternalInterface非常可靠(我遇到的99%的失败是JavaScript问题的结果,而不是ActionScript问题)。 IE中是否支持window.opener?您是否在没有Flash内容的页面中测试了JavaScript以确保代码有效?

编辑:如何将此作为评论发布而不是答案?

编辑编辑:nvm,我还不够评论。