Web開發(fā)是非常困難的?,F在的主流瀏覽器種類繁多,各種配置數以百萬計,而且數量還在不斷增加,再加上超過10億的Internet用戶,已經從整體上對Web開發(fā)過程進行了重新定義。Web開發(fā)人員和瀏覽器供應商已經嘗試用現代化的標準(HTML 4.01,HTML 5,CSS 2.1和CSS 3)來駕馭這些混亂。與先前版本相比,IE 8為那些被廣泛采用的Web標準提供了更好的支持,在很多(但非全部)情況下,使開發(fā)人員能夠編寫出可以在多種瀏覽器中正常工作的頁面。這一章將介紹這些標準以及IE中的互操作性改進、詳細的兼容性功能,還將介紹一些方法,用于處理標準與兼容性之間經常存在的沖突。
2.1 標準支持與互操作性
IE開發(fā)人員在整個IE 8發(fā)布周期中所表達的“默認標準”哲學指向了一個新的產品目標——對更大范圍的標準提供支持。IE 8非常引人注目地提供了對CSS 2.1規(guī)范的全面支持,并對HTML 5規(guī)范中一些比較穩(wěn)定的新功能提供了支持。本節(jié)重點介紹了IE 8相對于IE 7所做的改進,并為那些尋求創(chuàng)建互操作性Web應用程序的開發(fā)人員提供了一個支持基礎。
HTML 4.01,HTML 5和DOM規(guī)范支持改進
IE 8在對HTML 4.0標準的支持方面進行了大量改進;在當今的Web世界中,HTML 4.0是應用最多、最受認可的文檔標記語言。IE 8以IE 7為基礎,在實現IE 4.01規(guī)范方面進行了以下增強與改進內容:
● <p>元素結束:只要段落元素(<p>)結束標記之前出現以下標記之一,或者根本就沒有出現它的結束標記,就會自動關閉該元素:<table>,<form>,<noframes>和<noscript>。
● <object>回退:當IE不能從一個<object>標簽中加載資源時,IE將顯示該標記中包含的內容,以進行“回退”。
● <object>作為圖像:當IE遇到一個引用圖像資源的<object>標記時,它會呈現該圖像,就像這個圖像是嵌入在<img>標記中一樣。在過去的版本中,IE將通過這個標記來顯示圖像資源,但不能恰當地調整大小,也不提供邊框,在某些情況下會顯示滾動條。
來自W3C的HTML 5和各種DOM規(guī)范為Web開發(fā)人員提供了非常豐富的工具和事件,用以增強網頁和提高生產效率。IE 8實現了這些規(guī)范中的一些組成部分(這些部分已經在其他瀏覽器中得到了實現):
● Ajax哈希導航:基于哈希的頁導航(在這種情況下,URL中僅段組件發(fā)生變化)現在被存儲為導航事件。也就是說,用戶可以使用后退和前進按鈕在一個Ajax應用程序的狀態(tài)之間進行“導航”。這其中包含了對onhashchange DOM事件的支持。
● DOM存儲:Web應用程序可以訪問新的存儲對象,將數據和設置持久存儲在用戶的計算機上。window.sessionStorage和window.localStorage對象可以為這一數據應用提供高達10MB的本地存儲空間。
● 跨文檔發(fā)送消息:這一增強功能為瀏覽器窗口中基于<iframe>的文檔引入了一種新的通信結構,即使這些文檔來自不同域時也能使用。這些文檔現在可以使用postMessage API,以確??缥臋n數據傳輸經過了雙方同意,從而為用戶提供了額外保護。
● 聯(lián)機/脫機事件:現在可以使用onoffline和ononline事件來檢測網絡連接的丟失與恢復。將流行的Ajax技術與DOM存儲相結合,應用程序即使在脫機狀態(tài)下也能正常工作。
● CSS 2.1和CSS 3支持改進。
IE 8對CSS 2.1規(guī)范提供了全面支持,這一標準被廣泛用于定義文檔樣式、構建豐富的Web用戶界面。表2-1描述了自IE 7支持CSS 2.1以來所更改或添加的屬性。