2011-03-12 38 views

回答

2

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

对于在本地运行的SWF文件,只有当SWF文件和包含的网页(如果有的话)位于本地信任的安全沙箱中,才能成功调用这些API。如果内容位于本地网络或本地文件系统沙箱中,则调用这些方法失败。

然后在本地沙箱this page基本上说这是行不通的,除非SWF处于“受信任的本地沙箱”的用户或安装就需要把它英寸

This blog post有关“本地文件系统沙箱“说:

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

  1. 的SWF做不出来的JavaScript(或VBScript)的调用,无论是通过URL或ExternalInterface的
  2. 的SWF不能称之为HTTP或HTTPS请求。
  3. 查询字符串参数(例如Blah.php?查询字符串= QS值)被剥离,并不会传递(即使是要求对本地文件)
0

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

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

的ActionScript:

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

的JavaScript:

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

另外,如果你在它分发给客户。解释如何更改Flash Player设置可能很困难,因此您可以使用CD来运行服务器,从而绕过安全设置。我在过去曾与Flying Ant server祝你好运。

+0

对不起,我做了我的问题更加清晰,我不希望用户必须改变他们的全球闪光灯设置。 – erikvold

+0

然后运行本地服务器,就像我上面所描述的那样,是唯一的出路。 –

+0

P.S.或者以嵌入Flash的HTML/JS AIR应用程序的形式发布,但必须由用户安装。 –

1

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

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

+0

啊它说,如果'allowScriptAccess =“always”',域名无所谓,但在此之前它说:“对于本地运行的SWF文件,只有在SWF文件和包含网页(如果存在一个)位于受信任的本地安全沙箱中,如果内容位于本地网络或本地文件系统沙箱中,则对这些方法的调用将失败。所以我不认为这是可能的。 – erikvold

相关问题