當你在VS 2005中新增一個ASP.NET網頁,預設會套用XHTML標準,也就是你會在頁首看到這麼一列DOCTYPE的宣告: (想多了解一點DOCTYPE的人可以看這裡)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

過渡型的(Transaitional)的XHTML Schema是三種DOCTYPE標準中最隨和的一個,但套用在我們過去慣用HTML的"隨便"寫法上,還是會引發一堆語法警告及錯誤(想眼不見為淨的人可以參考這裡)。除此之外,我開始陸續發現,套用XHTML規格後,在解析既有的HTML Code時,顯示結果有時會有差異。

例如: 我從以前的網頁中Copy了以下這段HTML Code,插入到VS 2005新建立的ASPX中,打算定義一個600x300的TextArea
<textarea style="width: 600; height:300" id=T></textarea>

結果,用IE 6/7看,TextArea會變成只有160x36的哈比人,而且不管怎麼改變width的值,TextArea都不動如山,完全失控。最後我才發現,得修改成style="width: 600px; height: 300px",它才會正常顯示。

我查了W3C上的XHTML 1.0相容性說明,沒看到這一點,利用W3C的Validator檢查,也未指出此一錯誤。本來的推測是,或許IE解析HTML及XHTML規格的Parser是兩個Team寫的,對這種小細節,雙方處置的標準不一所致,但後來試了Firefox發現也是同樣的結果,因此看來是XHTML對style宣告要求更嚴謹所造成的吧! 不過,先不用緊張要去全面Review HTML Code,反正全世界目前仍有93%的網頁都不符合XHTML的規範,大家就一起同流合污吧!!

總之,若下次網頁移至VS 2005後出現這類異常,記得先將DOCTYPE宣告移除看看。


Comments

Be the first to post a comment

Post a comment