HI,
我尝试从我的动作脚本代码中调用javascript函数,但它无效;AS3:
if (ExternalInterface.available)
{
try
{
ExternalInterface.addCallback("changeDocumentTitle",null);
}
catch(error:Error)
js(使用swfobject的内部速度文件)
function changeDocumentTitle()
{
alert('call from SWF');
}
任何人都知道会发生什么?
答案 0 :(得分:7)
如果您尝试从Flex应用程序中调用JS函数,则需要使用ExternalInterface.call(...)而不是ExternalInterface.addCallback(...)。来自文档:
public static function call(functionName:String,... arguments):*
调用Flash Player容器公开的函数,传递零个或多个参数。如果该函数不可用,则调用返回null;否则它返回函数提供的值。 Opera或Netscape浏览器不允许递归;在这些浏览器上,递归调用会产生空响应。 (Internet Explorer和Firefox浏览器支持递归。)
如果容器是HTML页面,则此方法在脚本元素中调用JavaScript函数。
http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html
如果要将Flash应用程序中的ActionScript函数公开给HTML容器,则可以使用addCallback(),以便可以通过JavaScript调用它。
答案 1 :(得分:0)
在本地系统上,SWF和Javascript之间的通信往往受到安全问题的阻碍。您可以通过“设置管理器”重新配置闪存以允许其中一些通信。
在嵌入flash对象的地方没有设置“allowscriptacces”也可能是一个问题。
另一个问题可能是flash在加载javascript之前尝试调用javascript。初始订单可能非常烦人。