我正在设置一个基于 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中没有回调吗?或者还有什么我需要额外做的吗?
最佳答案
如果它在 FF 中有效但在 IE 中无效,则问题可能出在 JavaScript 代码中。 ExternalInterface 非常可靠(我遇到的 99% 的失败都是 JavaScript 问题造成的,而不是 ActionScript 问题)。 IE 是否支持 window.opener?您是否在没有 Flash 内容的页面中测试过 JavaScript 以确保代码有效?
编辑:我如何将其作为评论而不是答案发布?
编辑编辑:nvm,我还不够酷,无法发表评论。
关于javascript - 尝试从 JS 访问 Flash 电影在 FF 中有效,但在 IE 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977254/