gpt4 book ai didi

javascript - ExternalInterface addCallback 多次失败

转载 作者:行者123 更新时间:2023-11-28 02:14:29 24 4
gpt4 key购买 nike

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

设置方式如下:

该页面有点不寻常,是一个带有内联 JavaScript 的 Wordpress 页面。主要的 javascript 是一个 jQuery.ready() 代码块,用于加载 flash 对象(这样做是为了将 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 设置为“始终”,并且我可以确认 jQuery 语句达到了正确的目标。然而,当调试 flash 对象时,addCallback 返回 false — 这表明它失败了。有人知道会发生什么吗?

最佳答案

我以前也遇到过这样的问题。为了解释这一点,您可以将您的 Flash 文件想象为一个图像。通常,页面中的图像将在整个页面加载后显示。对于你的flash文件来说,在$.ready事件中,flash DOM被插入到你的页面中,但是它的内容正在加载,它的环境还没有准备好。

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

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

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

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

关于javascript - ExternalInterface addCallback 多次失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com