關(guān)于W3C標(biāo)準(zhǔn)驗證失敗的解析
本文章列出了十條W3C標(biāo)準(zhǔn)驗證失敗常見的原因以及解析,希望對初學(xué)網(wǎng)頁設(shè)計的朋友有所幫助。
W3Cvalidation有時難以操作,但用它你可以查看由版面設(shè)計引起的差錯。驗證程序拋出大量差錯和警告,說明你的XHTML尚未完善,可能無法在不同瀏覽器上保持一致功能。下面十個細微的失效問題難住了大批程序員,我們告訴你如何解決。在本文開始前介紹一些使用W3C驗證程序時需要注意的問題。
不要擔(dān)心驗證程序的警告——如果驗證程序說發(fā)現(xiàn)12處錯誤以及83處警告,不要理它,繼續(xù)進行下一步。
一次更正一個錯誤——按順序進展工作,從上到下,一次修正一個錯誤。HTML用瀏覽器從上到下瀏覽,這些錯誤也是按同樣順序顯示。
每次修正代碼后要刷新代碼,使它們重新生效——一個小錯誤常常會引發(fā)之后整頁的連串錯誤。因此如果操作不當(dāng),“修正錯誤”也可能引發(fā)更多錯誤。每次修正后使代碼重新生效,這樣就可以確保完全解決問題。
知道了上面這些基本的異常情況,下面我們就來看看版面設(shè)計無效的幾個原因。
1、div標(biāo)簽未關(guān)閉
這是版面設(shè)計失效的最常見原因之一。當(dāng)我們了解到這是多少精致的版塊設(shè)計失效的罪魁禍?zhǔn)讜r,總會大吃一驚。調(diào)查顯示,開啟的div標(biāo)簽是最普遍的版塊設(shè)計失誤之一,也是最難診斷的失誤之一。驗證程序有時會指向錯誤的開啟div標(biāo)簽,診斷時就像大海撈針一樣麻煩。
2、麻煩的embed標(biāo)簽
九十年代早期,Microsoft和Netscape的瀏覽器開始能夠辨認(rèn)非標(biāo)準(zhǔn)的獨有字體。遺憾的是這意味著W3C驗證程序還不能識別某些關(guān)鍵HTML標(biāo)簽,如“embed”,即使這些標(biāo)簽已經(jīng)被廣泛使用。如果確實希望得到嚴(yán)格的DOCTYPE(文檔類型)驗證,就只能放棄嵌套。
如果同時想要生效的版面設(shè)計和嵌入式媒體,可以試試FlashSatay方法。
3、不當(dāng)?shù)腄OCTYPE聲明
不聲明DOCTYPE,或者在文件開始錯誤聲明DOCTYPE,也是一個常見錯誤。根據(jù)一般經(jīng)驗,StrictDOCTYPE是大家追求的最高級驗證。Strictvalidation表明你的網(wǎng)頁能夠在所有瀏覽器上都得到最佳展示。Strict聲明代碼如下:
4、結(jié)尾斜線
如果你的網(wǎng)站不能驗證,很有可能是在代碼的某個地方漏寫了結(jié)尾斜線。我們很容易忽略結(jié)尾斜線之類的東西,特別是在image標(biāo)簽等元素中。例如:
在嚴(yán)格的DOCTYPE中這是無效的。要在img標(biāo)簽結(jié)尾處加上“/”以解決此問題。
5、Align標(biāo)簽
如果DOCTYPE被設(shè)為Transitional,你就會使用“align”標(biāo)簽,但如果要求更高一點希望得到Strict驗證,你會看到很多錯誤。Align是另一個不可用于版面設(shè)計的標(biāo)簽?梢試L試用“float”或者“text-align”來代替align轉(zhuǎn)換元素。
6、JavaScript
如果已經(jīng)聲明StrictDOCTYPE,就需要在JavaScript中覆蓋CDATA標(biāo)簽。驗證程序的這一方面難倒了很多程序員,因為網(wǎng)站傾向于為廣告和追蹤腳本使用嵌入的JavaScript。如果必須用到JavaScript,可以在其前后加上如下標(biāo)簽:
7、圖像需要“alt”屬性
你可能還沒有注意到,圖像也是高級驗證的潛在絆腳石。除了結(jié)尾斜線,高級驗證也要求用alt標(biāo)簽來描述圖像,如alt=”Scaryvampirepicture”。
搜索引擎也靠alt標(biāo)簽來識別網(wǎng)頁上的圖像,所以無論怎樣加上alt標(biāo)簽總是好的。
8、未知實體數(shù)據(jù)
實體數(shù)據(jù)是又一個影響驗證的易犯錯誤。我們可以考慮用適當(dāng)?shù)木幋a字符來代替“&”等符號。entirelist中列出在XHTML版塊設(shè)計中可用的適當(dāng)?shù)木幋a字符實體數(shù)據(jù)。
9、不良嵌套
嵌套就是元素里又包括元素
Sweet!
我們?nèi)菀谆煜短自氐捻樞颉@缭赿iv標(biāo)簽前啟動strong標(biāo)簽,但又先關(guān)閉div標(biāo)簽。
10、缺少“title”標(biāo)簽
盡管這看上去是一個很明顯的錯誤,很多程序員(包括我自己)還是經(jīng)常會在“head”版塊中遺漏title標(biāo)簽。當(dāng)你看到“missingarequiredsub-elementofHEAD”(缺少HEAD的必要子元素)時,才會發(fā)現(xiàn)自己忘記添加title標(biāo)簽了。