自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Internet Explorer 11:其實(shí)已經(jīng)不再是 IE 了

系統(tǒng) 瀏覽器
在微軟Build 2013開發(fā)者大會(huì)上,微軟發(fā)布了用于 Windows 8.1 上的首個(gè) Internet Explorer 11 的預(yù)覽版,雖然被叫為 Internet Explorer 11,但它已經(jīng)不再是 IE 了。

微軟在上周剛剛發(fā)布了用于 Windows 8.1 上的首個(gè) Internet Explorer 11 的預(yù)覽版,此舉是為了回應(yīng)之前泄漏關(guān)于 Internet Explorer 11 的信息。我們已經(jīng)確認(rèn) Internet Explorer 11 中的一些新特性,包括對(duì) 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 對(duì) Web 標(biāo)準(zhǔn)的支持非常好,因此不再需要之前那些 IE 特定的行為。

在 Internet Explorer 11 中,user-agent 比之前的版本要短很多,而且去掉了最關(guān)鍵的 MSIE 的關(guān)鍵字:

Internet Explorer 11 的 user-agent:

  1. Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko 

Internet Explorer 10 的 user-agent (on Windows 7):

  1. Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) 

上述 user-agent 你還會(huì)注意到增加了 Gecko 的標(biāo)識(shí),而 Safari 是首個(gè)標(biāo)注了 Gecko 的瀏覽器。

之前多數(shù)使用 MSIE 來判斷是否 IE 瀏覽器的代碼都無法工作,可以改用 Trident 字符串來判斷。Trident 標(biāo)識(shí)是在 IE9 中引入的。

此外微軟還更改了 navigator 對(duì)象:

  • navigator.appName 值為 “Netscape”
  • navigator.product 值為 “Gecko”

這或許是一項(xiàng)開發(fā)者的詭計(jì),但該行為的確是在 HTML5 中實(shí)際指定的。在 HTML5 中要求這兩個(gè)屬性必須返回上述對(duì)應(yīng)的值,這是一個(gè)很奇怪的規(guī)定的,更奇怪的是 Internet Explorer 11 遵守了這個(gè)規(guī)定。

此舉導(dǎo)致一些根據(jù) navigator 對(duì)象判斷瀏覽器型號(hào)的 JavaScript 代碼會(huì)將 Internet Explorer 11 識(shí)別成基于 Gecko 的瀏覽器。

document.all 和 friends

從 IE 4 開始,document.all 在 IE 中舉足輕重。比起 document.getElementById() 來說,document.all 是 IE 方式的獲取元素的引用的方法。盡管 IE 5 增加對(duì) DOM 的支持,但 document.all 一直沿用至 IE 10。而在 Internet Explorer 11 中終于被廢棄了,這意味著在 Internet Explorer 11 中使用 document.all 的方法將可能導(dǎo)致執(zhí)行失敗,盡管使用了 document.all 的代碼實(shí)際上還是可以工作。[3]

另外一個(gè)要廢棄的是 attachEvent() 方法,該方法用于添加事件處理器,對(duì)應(yīng)的 detachEvent() 用來移除事件處理器。這兩個(gè)方法將在 Internet Explorer 11 中刪除。移除這兩個(gè)方法需要改用如下邏輯:

  1. function addEvent(element, type, handler) { 
  2. if (element.attachEvent) { 
  3. element.attachEvent("on" + type, handler); 
  4. } else if (element.addEventListener) { 
  5. element.addEventListener(type, handler, false); 
  6.    } 

當(dāng)然,建議你優(yōu)先使用標(biāo)準(zhǔn)的瀏覽器進(jìn)行測(cè)試以確保不會(huì)因?yàn)?attachEvent() 的移除而影響代碼執(zhí)行。不過互聯(lián)網(wǎng)上充斥著各種糟糕的監(jiān)測(cè)代碼,你只能確保自己的應(yīng)用經(jīng)過良好的標(biāo)準(zhǔn)測(cè)試。

被刪除的特性還包括:

  • window.execScript() – IE 版本的 eval()
  • window.doScroll() – IE 用來滾動(dòng)窗口的方式
  • script.onreadystatechange – IE 方式的腳本加載完成的事件通知
  • script.readyState – IE 方式的測(cè)試腳本是否加載完成的狀態(tài)
  • document.selection – IE 方式獲取當(dāng)前選擇的文本
  • document.createStyleSheet – IE 方式創(chuàng)建樣式單
  • style.styleSheet – IE 方式引用樣式

所有這些被廢棄的方法都有基于標(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)的瀏覽器。

更新(2013-7-2): document.all 并沒有真正被刪除,但不推薦使用。

via nczonline/oschina翻譯

責(zé)任編輯:黃丹 來源: oschina
相關(guān)推薦

2009-02-24 08:22:53

Internet ExIE8RTM

2011-07-18 09:28:44

開源開放

2022-06-30 16:14:20

IEEdge瀏覽器

2013-05-31 13:33:57

Ubuntu操作系統(tǒng)

2015-03-30 15:28:42

創(chuàng)業(yè)創(chuàng)業(yè)融資七牛

2013-11-08 09:48:50

IEIE11

2009-12-16 09:44:57

Linux桌面Linux

2012-08-24 13:37:59

Internet Ex瀏覽器

2012-03-14 15:06:11

用友云計(jì)算

2011-11-21 13:11:46

Wi-Fi下一代熱點(diǎn)

2020-04-24 08:18:31

Python編碼 開發(fā)

2020-11-11 14:56:00

Docker容器工具

2009-06-12 08:39:07

BSM運(yùn)維管理北塔

2011-03-17 13:59:14

和信創(chuàng)天終端管理虛擬終端管理系統(tǒng)

2011-09-20 09:38:55

2015-11-23 13:17:42

引導(dǎo)設(shè)計(jì)

2017-03-14 13:28:53

2011-09-20 10:24:30

2011-08-18 09:26:45

IE

2010-12-28 15:15:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)