Error tolerance and quirk mode (zhTW)
出自 MozTW Wiki
(作者:danielwang 譯者:教父)
除了安全性問題之外,Microsoft Internet Explorer 的正字標記之一就是它的容錯能力。其實整個 Microsoft Windows 開發平台都是這樣。容錯能力讓許多開發者覺得很幸福。不幸的是,對某些開發者來說,尤其是對平台設計者本身來說,這也是個惡夢。
許多使用者都問過,為什麼 Mozilla(和 Firefox)不能像 Internet Explorer(IE)一樣,容忍更多的錯誤。如果 Mozilla 可以把編碼不良的網頁處理得優雅一點,他們想,問題網站就會少一點,Mozilla 的使用率就會高一點。但是,技術上而言,這既不可能也不可取。
在網站開發的圈子裡,我們把不符合標準的瀏覽器排版(佈局)行為叫做怪癖(quirks)。這些行為可能是程式的錯誤,或是本來就設計成這樣(為了反向相容或容錯)。它們大部分都沒有可供查詢的說明文件,而且幾乎不可能辨認。有鑑於 IE 的市場優勢,許多開發者和使用者就把 IE 所有的怪癖(包括程式錯誤)當成網路所有的特色。
這些怪癖的本質,讓模擬 IE 變得不可能。對於怎麼處理編碼不良的網頁,沒有一個標準;而且,不拿到彼此的原始碼,開發者就不能寫出軟體,來用同樣方式處理這些網頁。我可以丟出一個隨性的,不複雜的例子:
<b> <p><li> <font color=red>段落 <div style="position:absolute;top:10px;right:10px;color:blue"> 哇啦 </p> </font> 哇啦 </b> 哇啦 </div>
然後在不同的瀏覽器得到不同結果(即使是 IE 自己的不同版本也一樣)。此外,所有軟體都有程式錯誤,難以判斷一個排版怪癖是意外,或者是瀏覽器在猜想網頁可能包含的錯誤。瀏覽器開發者最多只能模仿怪癖,永遠無法精確。
容錯容得太過分也不可取。Windows XP SP2 之前的電腦會有那麼多安全漏洞的理由之一,就是因為那些平台讓開發者很容易做事,包括他們不該做的事。換句話說,Windows 容錯。Service pack 2 引起議論紛紛可不只是因為它修復了一些東西,還因為它弄壞了一些東西(既存的軟體)。
容錯(或是反向相容)可能有拉攏新開發者這個短期優點,但是它會以長期開發做為代價。Internet Explorer 承受相同的宿命。為了『壞編碼』所設計的程式碼已經讓這瀏覽器超載,所以它的開發受阻。事實上 [BetaNews Interview|Windows Product Management 的執行長接受 BetaNews 訪談]的時候就提到,反向相容是讓 IE 進一步開發有困難的理由之一。
結論是,網站開發者不應該期望 Mozilla 或任何瀏覽器把編碼不良的網頁處理成『它們應該有的樣子』(這沒辦法定義)。這麼做只會把網站開發者鎖在古早的技術裡。