ExternalInterface的 - 从SWF的JavaScript调用(externalint

2019-10-28 15:58发布

HI,

我尝试从我的ActionScript代码,但它不工作调用javascript函数;

AS3:

if (ExternalInterface.available)
  {
  try
  {
    ExternalInterface.addCallback("changeDocumentTitle",null);
  } 
  catch(error:Error)

JS(使用SWFObject速度文件内)

function changeDocumentTitle() 
    {
        alert('call from SWF');
    }

任何人都知道可能是什么happenin?

Answer 1:

如果你想从你的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()被使用。



Answer 2:

在本地系统中,SWF和Javascript之间的沟通往往是由安全问题的阻碍。 您可以重新配置您的闪存允许通过“设置管理器”某些通信。

这也可能是与“allowscriptacces”未设置您嵌入Flash对象的问题。

另一个问题可能是闪光灯尝试加载的JavaScript之前调用JavaScript。 该init命令的事情是非常烦人。



文章来源: externalinterface - calling javascript from SWF