HI,
我尝试从我的ActionScript代码,但它不工作调用javascript函数;
AS3:
if (ExternalInterface.available)
{
try
{
ExternalInterface.addCallback("changeDocumentTitle",null);
}
catch(error:Error)
JS(使用SWFObject速度文件内)
function changeDocumentTitle()
{
alert('call from SWF');
}
任何人都知道可能是什么happenin?
如果你想从你的Flex应用程序中调用JS功能,要使用ExternalInterface.call(...),而不是ExternalInterface.addCallback(...)。 从文档:
公共静态函数调用(functionName:字符串,...参数):*
调用由Flash Player容器公开的函数,传递零个或多个参数。 如果功能不可用,则调用返回null; 否则它返回由该函数提供的值。 递归是不允许在Opera或Netscape浏览器; 在这些浏览器递归调用生成null响应。 (递归支持Internet Explorer和Firefox浏览器。)
如果容器是HTML页,此方法将调用脚本元素的JavaScript函数。
http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html
如果你想从您的Flash应用程序的HTML容器暴露ActionScript函数,以便它可以通过JavaScript调用的addCallback()被使用。
在本地系统中,SWF和Javascript之间的沟通往往是由安全问题的阻碍。 您可以重新配置您的闪存允许通过“设置管理器”某些通信。
这也可能是与“allowscriptacces”未设置您嵌入Flash对象的问题。
另一个问题可能是闪光灯尝试加载的JavaScript之前调用JavaScript。 该init命令的事情是非常烦人。