Luar's Flash Playground:你有所不知的HTML發佈Flash的參數(一):allowScriptAccess
新聞(101)
觀點或評論(94)
Flash書(63)
教程(73)
Design Patterns(3)
FlashCom筆記(47)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(23)
Ajax筆記(9)
習作(51)
組件(17)
酷站(32)
學習資源(28)
書籍推介(15)
本站與我(91)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
你有所不知的HTML發佈Flash的參數(一):allowScriptAccess (22-10-2007)

HTML發佈Flash的參數,就是那些額外加在HTML<embed>, <object>中的參數,由以前常見的wmode到現在越來越多allow*系列。不小心亂用、不小心配合地用、或者不知道它們的妙用,往往對你的Flash開發效率有大大的影響。

今天先說一個allowScriptAccess。在Flash Player 6,0,40,0起,你可以通過設定allowScriptAccess來決定Flash是否可以用getURL, FSCommand和 ExternalInterace去呼叫JavaScript的Function。allowScriptAccess的值分為always和never。Flash Player 7或之前預設是always,代表Flash可以呼叫相同或不同domain的JavaScript的Function;Flash Player 8或之後預設是sameDomain,代表Flash只可以呼叫相同domain的JavaScript的Function。

這個Flash Player安全收緊,又是一個陷阱所在。如果JavaScript的Function是來自其他domain(<script src="http://otherdomain.com/script.js" type="text/javascript"></script>),Flash Player 8或之後,Flash就無法呼叫,必須在發佈SWF的HTML上加入allowScriptAccess=always。

這陷阱對Developer影響較大,不過allowScriptAccess=always還有另一個用處,對普通Designer幫助更大。

有時在論壇上常常有人問,為什麼更新到Flash Player 9後,用getURL不能打開其他網頁。這有可能是Flash在本地發佈安全限制,但我是發佈在網絡上,為什麼仍然不能?原因是提問者往往沒有說清楚自己的發佈路徑,別人就會摸不著頭腦。其實,如果包含Flash的網頁所在domain,跟Flash所在domain是不同,如果用getURL,加上_self, _top, _parent來變更目前網頁,Flash Player 9起會預設無效!這時,只要加上allowScriptAccess=always就可以解決問題。(參考這TechNote

本文章由發表。
意見
  • laur,allowScriptAccess的默认属性我怎么记得是sameDomian。

    cbm於22-10-2007發表

  • 呵呵,他笔误了而已,呵呵。

    Apol於22-10-2007發表

  • Flash Player 7或之前是always, Flash Player 8或之後是sameDomain, 我補充和更正了。

    luar於22-10-2007發表

  • 补充了。完美了。
    ;)

    cbm於22-10-2007發表

同組文章

Movable Type 4.32-en系統支持,Luar's Production版權所有。