轉(zhuǎn)載自:nczonline
微軟在上周剛剛發(fā)布了用于Windows 8.1上 的首個Internet Explorer 11的預覽版。我們已經(jīng)確認Internet Explorer 11中的一些新特性,包括對WebGL的支持、預抓取、預渲染、flexbox、mutation observers以及其他一些Web標準的支持。但是更有趣的是,雖然被叫為Internet Explorer 11,但它已經(jīng)不再是IE了。
這也是首次微軟真正移除了Internet Explorer的一些特性:更改了user-agent字符串,這使得很多判斷瀏覽器是否IE的代碼無法工作,包括有些JavaScript的 isIE()的方法在Internet Explorer 11上執(zhí)行會返回false。不過好在Internet Explorer 11對Web標準的支持非常好,因此不再需要之前那些IE特定的行為。
在Internet Explorer 11中,user-agent比之前的版本要短很多,而且去掉了最關鍵的MSIE的關鍵字:
上述user-agent你還會注意到增加了Gecko的標識,而Safari是首個標注了Gecko的瀏覽器。
之前多數(shù)使用MSIE來判斷是否IE瀏覽器的代碼都無法工作,可以改用Trident字符串來判斷。Trident標識是在IE9中引入的。
此外微軟還更改了navigator對象:
? navigator.appName值為“Netscape”
? navigator.product值為“Gecko”
這或許是一項開發(fā)者的詭計,但該行為的確是在HTML5中實際指定的。在HTML5中要求這兩個屬性必須返回上述對應的值,這是一個很奇怪的規(guī)定的,更奇怪的是Internet Explorer 11遵守了這個規(guī)定。
此舉導致一些根據(jù)navigator對象判斷瀏覽器型號的JavaScript代碼會將Internet Explorer 11識別成基于Gecko的瀏覽器。
document.all和friends
從IE 4開始,document.all在IE中舉足輕重。比起document.getElementById()來說,document.all是IE方式 的獲取元素的引用的方法。盡管IE 5增加對DOM的支持,但document.all一直沿用至IE 10。而在Internet Explorer 11中終于被廢棄了,這意味著在Internet Explorer 11中使用document.all的方法將可能導致執(zhí)行失敗,盡管使用了document.all的代碼實際上還是可以工作。
另外一個要廢棄的是attachEvent()方法,該方法用于添加事件處理器,對應的detachEvent()用來移除事件處理器。這兩個方法將在Internet Explorer 11中刪除。移除這兩個方法需要改用如下邏輯:
當然,建議你優(yōu)先使用標準的瀏覽器進行測試以確保不會因為attachEvent()的移除而影響代碼執(zhí)行。不過互聯(lián)網(wǎng)上充斥著各種糟糕的監(jiān)測代碼,你只能確保自己的應用經(jīng)過良好的標準測試。
被刪除的特性還包括:
所有這些被廢棄的方法都有基于標準的替代方法。如果你使用的是標準的方法那恭喜你,可直接支持Internet Explorer 11.
結論
看起來Internet Explorer 11應該是Internet Explorer家族最棒的版本。通過最終移除過去一些魔鬼般的錯誤,微軟正在為大家準備一個真正標準的瀏覽器。
更新:document.all并沒有真正被刪除,但不推薦使用。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com