0

你好,

我试图从我的动作脚本代码中调用一个 javascript 函数,但它不起作用;

as3:

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

js(使用 swfobject 的内部速度文件)

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

有人知道会发生什么吗?

4

2 回答 2

7

如果您尝试从 Flex 应用程序中调用 JS 函数,您希望使用 ExternalInterface.call(...) 而不是 ExternalInterface.addCallback(...)。从文档:

公共静态函数调用(函数名:字符串,...参数):*

调用由 Flash Player 容器公开的函数,传递零个或多个参数。如果函数不可用,则调用返回 null;否则返回函数提供的值。Opera 或 Netscape 浏览器不允许递归;在这些浏览器上,递归调用会产生空响应。(Internet Explorer 和 Firefox 浏览器支持递归。)

如果容器是 HTML 页面,则此方法调用脚本元素中的 JavaScript 函数。

http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html

如果您想将 Flash 应用程序中的 ActionScript 函数公开到 HTML 容器以便可以通过 JavaScript 调用,则使用 addCallback()。

于 2009-05-19T19:52:50.227 回答
0

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

在嵌入 Flash 对象的位置未设置“allowscriptacces”也可能是一个问题。

另一个问题可能是 flash 在加载 javascript 之前尝试调用 javascript。初始化顺序的事情可能很烦人。

于 2009-05-19T17:36:24.740 回答