2001:微軟反壟斷案與第一次瀏覽器大戰落幕#
事件#
2001年,美國訴微軟案(1998年提起)初審判決確定微軟濫用壟斷地位(將 IE 綁入 Windows 打壓 Netscape),微軟與司法部達成和解。同年8月 IE 6 隨 Windows XP 問世,市佔率在此後數年達到95%以上——第一次瀏覽器大戰(1995–2001)以微軟完勝落幕。
為何重要#
- 大戰結束 = 創新停滯:競爭消失後,微軟解散 IE 團隊,IE 6 從2001年到2006年沒有任何重大更新。Web 開發被鎖死在 IE 6 的怪癖(quirks mode)與 IE 專屬語法上五年。
- JavaScript 的「雙重停滯」:語言標準也在同一時期凍結——ES4 提案(引入類別、命名空間、型別)因 Netscape 消亡與社群內戰而失敗(2003–2008),語言十年沒有新版本。
- 反壟斷判決的長期效應:微軟不敢再把瀏覽器與 OS 深度綁定,為 Firefox(2004)、Chrome(2008)的崛起留下空間。
- IE 6 的長期壟斷直接導致:開發者社群的怨氣累積("Kill IE6" 運動)、Web 標準運動(Web Standards Project)的興起。
理論與實用原因#
- 理論原因:壟斷理論——缺乏競爭的市場不會自行創新;瀏覽器是 Web 平台的守門人,壟斷守門人等同壟斷整個 Web 的演進方向。
- 實用原因:微軟的商業動機是保護 Windows 作業系統的應用程式壟斷——如果瀏覽器夠強(能跑 Web 應用),Windows 就不再必要。這個恐懼正是 IE 免費、深度綁定的原因。
彌補了什麼缺陷(以及製造了什麼)#
微軟的 IE 策略「彌補」了 Windows 平台的競爭威脅,卻製造了 Web 開發史上最大的缺陷:五年零創新 + IE 專屬語法碎片化。其解方——開源競爭者(Mozilla/Firefox)與標準組織(W3C、ECMA)——塑造了此後二十年的 Web 格局。
相關條目#
程式範例#
IE 6 壟斷時代的開發日常:程式碼被鎖死在 IE 專屬 API 上:
// IE 6 時代的「事實標準」:IE 專屬語法
var el = document.all["header"]; // IE 專屬(W3C 是 getElementById)
el.attachEvent("onclick", handler); // IE 專屬事件(W3C 是 addEventListener)
el.style.filter = "alpha(opacity=50)"; // IE 專屬透明度(W3C 是 opacity: 0.5)
var x = event.clientX; // IE 用全域 event 物件(W3C 用參數傳入)
IE 6 不更新五年,標準版本永遠用不了;Firefox(2004)崛起後,開發者才敢寫標準碼:
// 2004年後:W3C 標準終於可用
var el = document.getElementById("header");
el.addEventListener("click", handler, false);
el.style.opacity = "0.5";
再配上 Firebug(2006)——除錯從 alert() 地獄進入 DevTools 時代:
// 2001–2006年的除錯方式
alert("x = " + x); // 每個變數一個 alert,一頁要按十幾次
// Firebug 之後
console.log("x =", x); // 主控台、斷點、逐步執行、DOM 檢視器