1

我试图让 JS 在 Wordpress 网页和 Actionscript 2 Flash 电影中相互交谈。尝试失败得很惨。在每次尝试调用我为其设置回调的函数时,我都会在浏览器错误控制台中得到“.....不是函数”(我使用的是 Firefox 20)。

这是设置的方式:

该页面有点不寻常,它是一个带有内联 javascript 的 Wordpress 页面。主要的 javascript 是加载 flash 对象的 jQuery.ready() 代码块(这样做是为了将 URL 中的 GET 参数传递到 flash 中)。加载后,有一个链接:

<a href="javascript:jQuery('#fmap')[0].setRegion('regiona');">Region A</a>

同时,flash 对象中包含以下内容以使其成为可能:

import flash.external.ExternalInterface;
System.security.allowDomain("thisdomain.com");   // the domain on which the flash is hosted
ExternalInterface.addCallback("setRegion", null, switchZone);  //switchZone is the function's internal name

flash 的容器将 allowScriptAccess 设置为“always”,我可以确认 jQuery 语句击中了正确的目标。但是,当调试 flash 对象时,addCallback 返回 false — 表明它失败了。有人知道会发生什么吗?

4

2 回答 2

1

我以前遇到过这种问题。为了解释这一点,您可能只是将您的 Flash 文件映像为图像。通常,页面中的图像将在整个页面加载后显示。对于您的 flash 文件,在 $.ready 事件中,flash DOM 被插入到您的页面中,但它的内容正在加载并且它的环境尚未准备好。

要处理此问题,您需要在页面中注册一个回调函数,如下所示:

window.ping = function () {
    $('#fmap')[0].setRegion('regiona');
}

然后在您的闪存环境中,调用 ping() 注册

函数调用的顺序是这里的重点。

于 2013-05-17T01:39:27.093 回答
0

好的,想通了。首先,函数声明需要位于 ExternalInterface.addCallback 位之上。此外,一旦完成,它就会开始抛出一个不同的错误,所以我不得不创建一个新功能......感谢您的帮助。

于 2013-05-18T00:28:06.273 回答