js與flash交互(轉)


html頁面里js調用swf里的方法,以及swf調用js函數。
as中:

ExternalInterface.call("js函數名“,參數1,參數2,....);//flash調用js

ExternalInterface.addCallback("js函數名", as對應方法);//添加js對應的回調函數。

html中:
關健是要先獲取dom里的flash節點對象.假定為swfobj,
js
調用方法為:swfobj.方法名(參數1,參數2);
例如:
as
中:

ExternalInterface.addCallback("play", jsplay)

function jsplay(a,b,c){

//do someting

}

js中可為:
swfobj.play(”a”,”b”,”c”);
js
調用時需要對object,embed中的AllowScriptAccess做設定,默認值是: sameDomain,如果跨域的需要設為always,還要對其as中的Security.allowDomain進行設定,圖方便可直接設為 Security.allowDomain(*);

補充一個比較杯具的問題:
除純正的IE之外所有IE內核的瀏覽器,例如:傲游,TT,世界之窗等等,在js調用flash時會出現安全沙箱的問題。貌似是AllowScriptAccess無效了,其真正原因是因為這些外殼瀏覽器的緩存機制的問題。比較惡心的作法是針對IE內核的瀏覽器在引用swf文件時,在其URL地后增加一個隨機變量。通過動態改變URL方式清除緩存。本來還以為是這些瀏覽器有問題,后來細想一下,還是adobe的問題。

jquery+swfobject代碼:

var r=$.browser.msie?"?"+Math.random():"";

swfobject.embedSWF("main.swf"+r, "slides", "500", "260", "9.0.0","",

{}, {"AllowScriptAccess":"always"}, {"id":"flash_map","name":"flash_map"});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM