萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> Flash教程 >> Flash元素必須用外部的腳本創建

Flash元素必須用外部的腳本創建

         一直以來都是用swfobject庫創建flash。盡管它兼容性比較好,但幾百行的代碼實在有點累贅,畢竟一個flash元素只需幾行HTML就可以創建了。
雖然用<object><embed>創建的和swfobject創建的flash內容一模一樣,但有個非常明顯的瑕疵:就是前者生成的Flash周圍有個灰色邊框,並且鼠標移入Flash後,會提示“單擊以激活並使用控件”。雖然只出現在部分浏覽器上,但這嚴重影響了美觀。 

然而使用swfobject.js創建的卻沒有。我想應該是動態創建,然後加入頁面文檔,就不會有這些提示。但一番測試,無論是innerHTML寫入,還是createElement創建的Flash,仍然存在這些問題。並且為了做到和swfobject一樣,我設置了Flash元素的每個可選參數,但仍然一樣。 

既然完全和swfobject一樣的方法創建Flash,為什麼我的會有這些東西呢? 我嘗試刪除swfobject.js裡的部分代碼,看看少了哪行之後,就會出現提示了。 

刪了一行又一行,最後意想不到的事發生了,swfobject.js只剩下了一行: el.outerHTML = "<object ....." 

原來,無論用什麼方法創建,只要創建它的JS是在外部的文件,就不會出現這些提示。而之前我的代碼始終寫在一個頁面裡。真的很神奇! 

最後,我總結了下,其實加入Flash非常的簡單,只需一行就夠了(當然是在外部的JS裡): 

dom.innerHTML = "<embed src=X.swf></embed>"; 

就能在所有浏覽器裡插入Flash,需要固定尺寸的話只需加上width和height屬性就可以。 

這種方法可以滿足大多數的Flash,唯一的缺陷就是IE下的Flash不能創建JS回調接口:ExternalInterface.addCallback。解決方法就是在IE下用<object>代替<embed>。 

copyright © 萬盛學電腦網 all rights reserved