iT邦幫忙

DAY 15
5

Javascript面面觀系列 第 15

Javascript面面觀:網頁篇《瀏覽器之爭與網頁大問題》

讓一堆前端工程師奔忙的由來...當作下一階段的起頭吧。
除了到最近各家瀏覽器大放異彩,瀏覽器的歷史幾乎就是兩家公司互相鬥爭的歷史。我記得自己最早是在windows3.1上面玩mosaic,這也是最早瀏覽器的base,網景跟IE都是從他衍生出來的。網景以開發出plugin架構,在早期瀏覽器的舞臺開始佔上風,這時微軟已經藉由windows95統一天下,接下來使出作業系統內建瀏覽器的殺手鐧,網景就漸漸敗退,後來靠Mozilla基金會苟延殘喘。

在早期兩個瀏覽器互相競爭的時代,html、css、dom等標準就開始制定了,但是從來沒有一家完全符合過標準,對於標準的「違背」也是互有領先,而微軟獨大後,在IE加了更多東西,也有許多也不符合標準。這個狀況隨著IE8的出現有機會逐漸改觀,但是恐怕得花很長時間才有機會扭轉。

所以從早期開始,網頁工程師手邊大概就隨時有Javascript / dom /css的手冊做參考,手冊裡面最重要的參考就是相容性的表格,哪個瀏覽器的哪個版本跟哪個指令或語法相容,這是做網頁開發永遠的痛。現在許多人常去的,大概是w3schools,不過他的資料有點過時...也許參考PPK的網站是個好主意:http://www.quirksmode.org/,PPK在這個網站上維護了一份相當完整的瀏覽器相容性表格,而且比較常更新。(Peter-Paul Koch是荷蘭人,前端工程師,幾本著名的javascript / ajax書籍的作者。)

除了瀏覽器不符合標準之外,其實還有一個問題。Javascript在瀏覽器這個host環境中執行時,他的global物件就是window物件。不過呢...關於window物件是沒有標準存在的,DOM標準以及DOM HTML標準,規範的地方只及於window.document。W3C其實有一份非正式文件,定義了window物件1.0版的規格草案:Window Object 1.0,但是內容真的還非常非正式...恐怕無法直接參考。這份Window Object 1.0文件是2006年發布的,怎麼後來沒下文?其實看看HTML5就會明白。HTML5裡面會對瀏覽器的行為有完整規範,包括底層從伺服器取得網頁內容的方式到最後呈現在視窗中,以及window物件的方法等,都有提供「未來」的規範。所以...標準還要再等等。

要使用Javascript來做網頁程式開發,首先要面對的,就是以上一堆歷史包袱帶來的「不相容」問題,目前這個問題還是存在在IE及其他瀏覽器之間。套一句PPK在他網站上引用Sartre的名言:「Hell is other browsers」...

除了相容性,其實DOM的規範本身也多少有一些問題及陷阱。Douglas Crockford在他的一些演講裡有提到:http://developer.yahoo.net/blogs/theater/archives/2007/01/douglas\_crockford\_an\_inconveni.html(有點舊,但是還是值得參考,至少目前情況沒有大改變)

至於CSS,那就更不用說了...如果碰到問題,還是上http://www.quirksmode.org查比較快。

總結一下,問題大致上還是可以歸納成幾個部份:

  1. HTML...例如XHTML規定很嚴格,以至於大家幾乎都沒在用,連HTML5都捨棄他
  2. Javascript使用不包涵在ECMA-262規範的東西:其實已經不多了,而且通常也不大會去用。
  3. 使用非標準的、或是瀏覽器專有的DOM語法,最常看到的大概是IE的document.all
  4. 事件處理,IE一直跟別人不太一樣,目前大部分瀏覽器都照著DOM Event標準來了。
  5. CSS支援...各家可支援的方法不一

處理瀏覽器的不相容問題,增加更多使用的方便性,讓網頁成為一個更豐富的互動平台,就變成Javascript Library以及Javascript Framework的重點。接下來幾天,就深入研究一下幾家主流javascript library及framework的架構,看看他們如何建構出有彈性而可延伸的核心,如何解決不相容問題,以及如何擴充這些library及framework的功能。


上一篇
Javascript面面觀:核心篇《ECMA-262 Edition 5》(下)
下一篇
Javascript面面觀:網頁篇《jQuery inside - 核心架構》
系列文
Javascript面面觀30
0
海綿寶寶
iT邦大神 1 級 ‧ 2009-10-27 09:11:00

實在令人不解
HTTP,SMTP,FTP大家就可以遵循得好好的
但到了HTML, javascript
各家瀏覽器就各顯神通
然後說別人都不相容,不標準

大概是IT世界越混亂
IT人越有飯吃吧...XD

jamesjan iT邦高手 1 級 ‧ 2009-10-27 09:31:35 檢舉

因為這些 protocol 訂定的人沒有 Microsoft,IBM...XD

0
jamesjan
iT邦高手 1 級 ‧ 2009-10-27 09:38:50

位子移到第一排,準備錄音筆

0
fillano
iT邦超人 1 級 ‧ 2009-10-27 10:15:56

還沒有標準時,兩家瀏覽器就在打個你死我活了...等到標準出來,大家都有包袱了吧?

0
rdx
iT邦新手 4 級 ‧ 2009-10-28 08:39:22


Sartre的名言:「Hell is other browsers」.
沙特只有講:l'enfer c'est les autres.
Hell is other people
PPK只是借用沙特的名言
並修改一下

fillano iT邦超人 1 級 ‧ 2009-10-28 09:14:02 檢舉

喔喔,謝謝您,不是您提,我還不知道這是Satre的哪句話呢?(因為理論上他不可能用browser才對)

我要留言

立即登入留言