這問題不知道該責(zé)罵不會(huì)自動(dòng)更新的IE6,還是該詛咒不懂向下兼容的W3C標(biāo)準(zhǔn)。
這是FLASH傳統(tǒng)的嵌入方法:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="32" height="32">
<param name="movie" value="test.swf" />
<param name="quality" value="high" />
<embed src="test.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="32" height="32"></embed>
</object>
使用 object 和 embed 標(biāo)簽來嵌入,細(xì)心的會(huì)發(fā)現(xiàn),object 的很多參數(shù)和 embed 里面的很多屬性是重復(fù)的。
有的瀏覽器支持 object ,有的支持 embed ,這也是為什么要修改 Flash 的參數(shù)時(shí)兩個(gè)地方都要改的原因。這種方法是 Macromedia 一直以來的官方方法,最大限度的保證了 Flash 的功能,沒有兼容性問題。
但是自從有了W3C標(biāo)準(zhǔn),和一些極力要求通過該標(biāo)準(zhǔn)的客戶,事情復(fù)雜了:
embed被認(rèn)為是非法的
embed 標(biāo)簽是 Netscape 的私有標(biāo)簽,雖然 embed 標(biāo)簽應(yīng)用廣泛存在,但是從HTML3.2,HTML4.0到XHTML1.0,W3C都沒有收錄這個(gè)標(biāo)簽。使用embed 標(biāo)簽的頁面將不能通過W3C校驗(yàn)。
其實(shí)他們這樣考慮也是正確的,大部分西方國家的用戶,正版vista系統(tǒng)基本上做到了普及,他們大多使用IE7.0/IE8.0等主流瀏覽器,使用這種簡介的標(biāo)簽可以節(jié)省好幾行代碼:
但是在盜版泛濫的中國,多數(shù)用戶仍然在使用windows xp系統(tǒng)上自帶的IE6瀏覽器,而它是不支持object標(biāo)簽的,只能使用變通的方式來解決。
目前的臨時(shí)辦法
既要符合標(biāo)準(zhǔn),又想在所有瀏覽器正確顯示flash應(yīng)該怎么做?我們可以添加一段冗長的JavaScript來隱藏embed標(biāo)簽:
不只如此,還需要在頁面中添加若干調(diào)用該JS的參數(shù)
那新的問題又出現(xiàn)了,如果用戶禁用了javascript怎么辦?
難道要先寫出更多的代碼,判斷用戶使用的是什么瀏覽器,然后根據(jù)瀏覽器再輸出合適的代碼?我靠,多影響頁面執(zhí)行效率啊,為了一個(gè)W3C標(biāo)準(zhǔn),多那么多行代碼,讓每一個(gè)訪問自己網(wǎng)站的用戶多等待1秒鐘?
所以我想表述的觀點(diǎn)是:
目前,IE6普及的大環(huán)境下,暫時(shí)不要考慮W3C標(biāo)準(zhǔn)。用心做好自己的頁面,能少寫幾行代碼就少寫幾行代碼。不要為了標(biāo)準(zhǔn)去做標(biāo)準(zhǔn)。
如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇