|
1.embed是非法的
<embed>標(biāo)簽是NETscape的私有標(biāo)簽,雖然<embed>標(biāo)簽應(yīng)用廣泛存在,但是從HTML3.2,HTML4.0到XHTML1.0,W3C都沒(méi)有收錄這個(gè)標(biāo)簽。使用<embed>標(biāo)簽的頁(yè)面將不能通過(guò)W3C校驗(yàn)。
2.應(yīng)該用object
W3C推薦的是<object>標(biāo)簽。甚至在XHTML2中,<img>都要被<object>所取代。用<object>方法插入flash的代碼是:
<object type="application/x-shockwave-flash" data="test.swf" width="200" height="100"> <parm name="movie" value="test.swf /> </object>但是這個(gè)方法在IE5-IE6/Win上不能正確顯示(不能連續(xù)播放,要下載完才能放),在低版本的可以正確顯示。后來(lái)采用先調(diào)一個(gè)小flash文件再嵌入大flash文件的方法解決了連續(xù)播放的問(wèn)題,但是在IE5以上版本有時(shí)依然出現(xiàn)不能顯示flash的情況。
3.目前的臨時(shí)辦法
那么既要符合標(biāo)準(zhǔn),又想在所有瀏覽器正確顯示flash應(yīng)該怎么做?macromedia網(wǎng)站是如何通過(guò)W3c校驗(yàn)的?
有設(shè)計(jì)師想到了用JavaScript來(lái)隱藏非法的<embed>標(biāo)簽,
<script type="text/Javascript "> if (navegiator . mimeTypes && navigator . mimeTypes["application/x-shockwave-flash"] { document . write('<embed src="test . swf" ...這是目前比較好的解決辦法。你一定要插flash,就用js調(diào)用。這種方法可以欺騙W3C的校驗(yàn)程序,使頁(yè)面通過(guò)校驗(yàn)。但僅僅是"欺騙",而不是真符合標(biāo)準(zhǔn)。
macromedia是怎么做的呢?看到這句代碼:
<!-- $RCSfile: FlashDetection2k.pm,v $ $Revision: 1.68 $ : your browser's accept header indicates you have Flash 6,0,65,0 or better, so you're OK for this Flash 6 movie, here it comes. -->它采用了一個(gè)折中二選一的辦法:
- (1).首先Javascript來(lái)判斷你的瀏覽器版本和flash player的版本;
- (2).根據(jù)版本的不同在后臺(tái)動(dòng)態(tài)的生成HTML代碼。
簡(jiǎn)單說(shuō)就是默認(rèn)采用<object>方法,如果瀏覽器不能處理object的MIME類(lèi)型“ application/x-shockwave-flash”,它就插入子元素<embed>。說(shuō)穿了,這和用js隱藏<embed>方法類(lèi)似,也是一種“欺騙”的辦法,但這是目前能夠做到的最符合標(biāo)準(zhǔn)的,比較完美的做法了。
要想真正拋棄<embed>,只能等IE瀏覽器對(duì)<object>更好的支持才行,也許要等到Longhorn出來(lái)了。
HTML/CSS技術(shù):Flash頁(yè)面如何通過(guò)校驗(yàn),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。