我正在设置基于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中没有回调吗?或者我还有什么需要做的吗?
答案 0 :(得分:2)
如果它在FF中工作但不在IE中工作,则问题可能在JavaScript代码中。 ExternalInterface非常可靠(我遇到的99%的失败是JavaScript问题的结果,而不是ActionScript问题)。 IE中是否支持window.opener?您是否在没有Flash内容的页面中测试了JavaScript以确保代码有效?
编辑:如何将此作为评论发布而不是答案?
编辑编辑:nvm,我还不够评论。