下面我們來共同學習
一、傳統的方法
這個方法是使用object和embed標籤來嵌入,細心的會發現,object的很多參數和embed裡面的很多屬性是重複的,為什麼要這樣做?為了瀏覽器相容,有的瀏覽器支援object,有的支援嵌入,這也是為什麼要修改Flash的參數時兩個地方都要改的原因。
這種方法是Macromedia一直以來的官方方法,最大限度的保證了Flash的功能,沒有相容性問題。但現在不太好用了:無法通過驗證,由於相容性而嵌入的嵌入標籤是不符合W3C的規範的。當然,如果你忽略什麼規範不規範,另當別論。
微軟由於上述原因,在sp2後限制了IE的ActiveX的使用模式,就是在頁面中的ActiveX有一個虛框,需要用戶點擊一次才能正常互動。 Flash是作為一個ActiveX嵌入到網頁中的,所以它也可以被牽連,只有透過 JS 嵌入 Flash 才能解決這個問題。
沒有Flash版本檢測,如果版本瀏覽器的flash插件版本不夠,無法正常顯示你的或者swf文件,或者會彈出一個ActiveX的確認安裝的框——這個框對很多用戶來說是很恐怖的。
二、用JS嵌入的方法
用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用document.write直接寫,這個法子說不太好,感覺hack成分多了,有點為了驗證而驗證的意思,並且沒有體現出什麼JS的優勢。我覺得一個好的JS要嵌入腳本,在保證Flash應有功能的基礎上,要發揮JS的優勢應該震動版本檢測,能很好解決可訪問性問題(用戶在無法瀏覽Flash 內容或禁用JS 的時候應該如何處理的問題),要易於重複使用。
我們在這裡要講的是SWFObject這個解決方案:
「SWFObject」是利用Javascript插入flash,好處多多,程式碼簡潔,不會出現IE6下的「按一下此處即可啟動控制項」的提示,並且可以透過W3C驗證。相反傳統的“object”插入flash的方法。
SWFObject 在新的 2.x 版本中,其最簡單的呼叫竟是一個詞語,並且不需要頁面等待載入完成,這意味著你可以將這些字詞寫在頁面的任何位置。的版本,要簡單多了。下面看幾個簡單常用的呼叫方法:
1、最簡單,懇求,只要想插入flash發揮作用的經典名言。
註解:呼叫方法embedSWF-插入SWF文件,參數依序是@swf文件的位址;@用於裝入swf文件的容器(如div)的id;@flash的寬度;@flash的高度(當然,這裡的寬高都可以使用諸如100%這樣的百分比來表示);@正常播放該flash所需的最低版本;@當版本低於要求時,執行該swf文件,這裡利用這個flash跳到官方下載最新版本的flash插件。 (這個參數可以省略)在同一個頁面插入多個flash到不同位置時,只要重複上面的語句,使用不同的容器id就可以了。
2、給swf檔傳遞參數、變數、屬性的呼叫方法
attributes.id = "dynamicContent3";
swfobject.embedSWF("test6_flashvars.swf", "content5", "300", "120", "6.0. 0","expressInstall.swf", {name1:"hello",name2:"world",name3:"foobar"}, {menu:"false"}, {id:"dynamicContent5",name:"dynamicContent5"} );
SWFObject 2.0 官方文件(中文) http://www.jb51.net/books/175630.html