有没有办法从actionscript中使用本地内容执行js函数?

时间:2011-03-12 04:57:02

标签: javascript flash actionscript local

当html文件和swf文件都使用window.alert协议时,我正尝试从actionscript执行类似file:的函数。

有人知道这样做吗?

,不更改全局Flash安全设置

3 个答案:

答案 0 :(得分:2)

看完Controlling access to scripts in a host web page之后看起来不可能。

  

对于本地运行的SWF文件,仅当SWF文件和包含的网页(如果有)位于本地受信任的安全沙箱中时,才能成功调用这些API。如果内容位于local-with-networking或local-with-filesystem沙箱中,则对这些方法的调用将失败。

然后本地沙箱上的this page基本上说除非swf位于“本地信任的沙箱”中,否则它将无法工作,用户或安装人员需要将其放入。

关于“local-with-filesystem沙箱”的

This blog post说:

  

首先,我认为这里的文档有点过于慷慨。从本地文件系统加载的SWF确实面临一些限制。最相关的限制可能是:

     
      
  1. SWF无法通过URL或ExternalInterface调用JavaScript(或vbscript)
  2.   
  3. SWF无法调用HTTP或HTTPS请求。
  4.   
  5. Querystring参数(例如Blah.php?querystring = qs-value)被剥离,不会被传递(即使是对本地文件的请求)
  6.   

答案 1 :(得分:1)

有一个文档“Controlling access to scripts in a host web page”,它描述了允许Flash内容与Javascript交互的各种方式和限制。

根据文档,只要您的embed标记包含AllowScriptAccess设置为“always”,无论页面从何处加载,您都应该没问题。

答案 2 :(得分:0)

您需要更新Flash Player settings,以便将文件路径列为“受信任位置”。然后,您就可以使用外部接口和其他JS通信方法。

此外,您无法使用外部接口(如 alert )从AS传递默认JS功能。你需要编写自定义函数......

的ActionScript:

import flash.external.ExternalInterface;
ExternalInterface.call("alertFromFlash", 'hello');

JavaScript的:

function alertFromFlash(str) {
   alert(str);
}

或者,如果您将此分发给客户。可能很难解释如何更改Flash Player设置,因此您可以从CD运行服务器,从而绕过安全设置的需要。我过去对Flying Ant server好运。