網站(zhàn)标準之Flash頁面如(rú)何通(tōσ‍∏✔ng)過校(xiào)驗

1.embed是(shì)非法的(de)
<embed>标簽是(shì)Ne"≈tscape的(de)私有(yǒu)标簽,雖然&l¥β≈♥t;embed>标簽應用(yòng)廣泛存在,但(dàn)是(s≤'hì)從(cóng)HTML3.2,HTML4δ ←♥.0到(dào)XHTML1.0,W3C₽↑¶都(dōu)沒有(yǒu)收錄這(zhè)個(gè)标簽。使'α±用(yòng)<embed>标α✔ 簽的(de)頁面将不(bù)能(néng)通(tōng)過W3C校(xià×₽™o)驗。
2.應該用(yòng)object
W3C推薦的(de)是(shì)<object>标簽↔£&¥。甚至在XHTML2中,<img>都(dōu)要≥£(yào)被<object>所取代。用✔αδ(yòng)<object>方法插入flasε₩‍h的(de)代碼是(shì):
<object type="appl€£↑φication/x-shockwave-flash"$λ data="test.swf" width="200" ​Ωheight="100"> <parm nameλ≈•∞="movie" value="test.swf /> α•¥♦</object>
但(dàn)是(shì)這(zhè)個(gè®↓β≤)方法在IE5-IE6/Win上(shàng)不(bù)能(néng♦¥♦)正确顯示(不(bù)能(néng)連續播放(fàng φ ),要(yào)下(xià)載完才能(néng)放(fàng)•→Ω ),在低(dī)版本的(de)可(kě)以正确顯示。後來(​ βlái)采用(yòng)先調一(yī)個(gè)小(xiǎ ¶o)flash文(wén)件(jiàn)‌•¥再嵌入大(dà)flash文(wén)件(jiàε↓n)的(de)方法解決了(le)連續播放(fàng)的(de≥→)問(wèn)題,但(dàn)是(shì)在IE5以上(shàng)版↓€本有(yǒu)時(shí)依然出現(xiàn)不(bù)能(néng™£¶₹)顯示flash的(de)情況。
3.目前的(de)臨時(shí)辦法
那(nà)麽既要(yào)符合标準,又(yòu)想在所有(₩≠πyǒu)浏覽器(qì)正确顯示flash應該怎麽做λ•♥(zuò)?macromedia網站(zhàn)是(shì)如(rú>≠)何通(tōng)過W3c校(xiào)>≥'驗的(de)?
有(yǒu)設計(jì)師(shī)想到(dào)了(le)用(yδ™∏₩òng)JavaScript來(lái)隐藏非法的(de)<e"λΩmbed>标簽,
<script type="text/javascriptΩ↓ "> if (navegiator . mimeTypes &Ω​amp;& navigator . mimeTypes["appli×σ₩×cation/x-shockwave-flash"↔α] { document . write('<$™ embed src="test . swf" ...
這(zhè)是(shì)目前比較好(hǎo)的(de)解決辦法。你(nǐ★₩)一(yī)定要(yào)插flash,就(jiù)用(yònγ₹®≠g)js調用(yòng)。這(zhè)種方法可(kě)以欺騙W→£↕δ3C的(de)校(xiào)驗程序,使頁面通(tōng)過校(xi→♠₩☆ào)驗。但(dàn)僅僅是(shì)"欺騙",而不(bù)是(sh©÷ì)真符合标準。
macromedia是(shì)怎麽做(zuò)的(d ♠≈e)呢(ne)?看(kàn)到(dào)這φ≠(zhè)句代碼:
<!-- $RCSfile: FlashDetect"&'βion2k.pm,v $ $Revision: 1.68 $ : your ≥→‌<browser's accept header indicat≈≈​ es you have Flash 6,0,65,0 or better,ε‌© so you're OK for th☆✘∞is Flash 6 movie, her₽≥ £e it comes. -->
它采用(yòng)了(le)一(yī)個(g♠€ è)折中二選一(yī)的(de)辦法:
(1).首先javascript來(lái)判斷你Ω≥¥(nǐ)的(de)浏覽器(qì)版本和(hé)flash player的(×♦de)版本;
(2).根據版本的(de)不(bù)同在後台動态的(de)生(shēng)成H♣→§→TML代碼。
簡單說(shuō)就(jiù)是(shì)默認采用(yòng)&σ¥lt;object>方法,如(rú)果浏覽器(qì)不(bù)能 εσ (néng)處理(lǐ)object的(de)MIME類型“ appl♠€☆ication/x-shockwave-flash”,它就(jiù≠γ ≤)插入子(zǐ)元素<embed&↑®gt;。說(shuō)穿了(le),這(zh×∏ δè)和(hé)用(yòng)js隐藏<∞‍•; embed>方法類似,也(yě)是(shì)≥β↑一(yī)種“欺騙”的(de)辦法,但(dàn)這(zhè)是(shì↔≈")目前能(néng)夠做(zuò)到(d>​ ào)的(de)最符合标準的(de),比較完₹≈↑美(měi)的(de)做(zuò)法了(le ↓)。
要(yào)想真正抛棄<embed>,隻能(néng)等I∑×E浏覽器(qì)對(duì)<object>更好(hǎ₩>δ$o)的(de)支持才行(xíng),也(yě)許<←γ≠要(yào)等到(dào)Longhorn出來(lái>')了(le)。