当html文件和swf文件都使用window.alert
协议时,我正尝试从actionscript执行类似file:
的函数。
有人知道这样做吗?
,不更改全局Flash安全设置
答案 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沙箱”的首先,我认为这里的文档有点过于慷慨。从本地文件系统加载的SWF确实面临一些限制。最相关的限制可能是:
- SWF无法通过URL或ExternalInterface调用JavaScript(或vbscript)
- SWF无法调用HTTP或HTTPS请求。
- Querystring参数(例如Blah.php?querystring = qs-value)被剥离,不会被传递(即使是对本地文件的请求)
醇>
答案 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好运。