IE11瀏覽器:請不要再叫我IE,謝謝
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
微軟在上周剛剛發(fā)布了用于Windows 8.1上的首個(gè)Internet Explorer 11的預(yù)覽版。我們已經(jīng)確認(rèn)Internet Explorer 11中的一些新特性,包括對WebGL的支持、預(yù)抓取、預(yù)渲染、flexbox、mutation observers以及其他一些Web標(biāo)準(zhǔn)的支持。但是更有趣的是,雖然被叫為Internet Explorer 11,但它已經(jīng)不再是IE了。
這也是首次微軟真正移除了Internet Explorer的一些特性:更改了user-agent字符串,這使得很多判斷瀏覽器是否IE的代碼無法工作,包括有些JavaScript的isIE()的方法在Internet Explorer 11上執(zhí)行會(huì)返回false。不過好在Internet Explorer 11對Web標(biāo)準(zhǔn)的支持非常好,因此不再需要之前那些IE特定的行為。 在Internet Explorer 11中,user-agent比之前的版本要短很多,而且去掉了最關(guān)鍵的MSIE的關(guān)鍵字: 上述user-agent你還會(huì)注意到增加了Gecko的標(biāo)識(shí),而Safari是首個(gè)標(biāo)注了Gecko的瀏覽器。 之前多數(shù)使用MSIE來判斷是否IE瀏覽器的代碼都無法工作,可以改用Trident字符串來判斷。Trident標(biāo)識(shí)是在IE9中引入的。 此外微軟還更改了navigator對象: • navigator.appName值為“Netscape” • navigator.product值為“Gecko” 這或許是一項(xiàng)開發(fā)者的詭計(jì),但該行為的確是在HTML5中實(shí)際指定的。在HTML5中要求這兩個(gè)屬性必須返回上述對應(yīng)的值,這是一個(gè)很奇怪的規(guī)定的,更奇怪的是Internet Explorer 11遵守了這個(gè)規(guī)定。 此舉導(dǎo)致一些根據(jù)navigator對象判斷瀏覽器型號(hào)的JavaScript代碼會(huì)將Internet Explorer 11識(shí)別成基于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的方法將可能導(dǎo)致執(zhí)行失敗,盡管使用了document.all的代碼實(shí)際上還是可以工作。 另外一個(gè)要廢棄的是attachEvent()方法,該方法用于添加事件處理器,對應(yīng)的detachEvent()用來移除事件處理器。這兩個(gè)方法將在Internet Explorer 11中刪除。移除這兩個(gè)方法需要改用如下邏輯: 當(dāng)然,建議你優(yōu)先使用標(biāo)準(zhǔn)的瀏覽器進(jìn)行測試以確保不會(huì)因?yàn)閍ttachEvent()的移除而影響代碼執(zhí)行。不過互聯(lián)網(wǎng)上充斥著各種糟糕的監(jiān)測代碼,你只能確保自己的應(yīng)用經(jīng)過良好的標(biāo)準(zhǔn)測試。 被刪除的特性還包括: 所有這些被廢棄的方法都有基于標(biāo)準(zhǔn)的替代方法。如果你使用的是標(biāo)準(zhǔn)的方法那恭喜你,可直接支持Internet Explorer 11. 結(jié)論 看起來Internet Explorer 11應(yīng)該是Internet Explorer家族最棒的版本。通過最終移除過去一些魔鬼般的錯(cuò)誤,微軟正在為大家準(zhǔn)備一個(gè)真正標(biāo)準(zhǔn)的瀏覽器。 更新:document.all并沒有真正被刪除,但不推薦使用。 該文章在 2013/11/10 22:52:18 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |