2011-03-12 41 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

相關問題