Internet Explorer 11:请不要再叫我IE_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > Internet Explorer 11:请不要再叫我IE

Internet Explorer 11:请不要再叫我IE

 2013/7/10 2:36:02    程序员俱乐部  我要评论(0)
  • 摘要:微软在上周刚刚发布了用于Windows8.1上的首个InternetExplorer11的预览版,此举是为了回应之前泄漏关于InternetExplorer11的信息。我们已经确认InternetExplorer11中的一些新特性,包括对WebGL的支持、预抓取、预渲染、flexbox、mutationobservers以及其他一些Web标准的支持。但是更有趣的是,虽然被叫为InternetExplorer11,但它已经不再是IE了
  • 标签:net internet

  微软在上周刚刚发布了用于 Windows 8.1 上的首个 Internet Explorer 11 的预览版,此举是为了回应之前泄漏关于 Internet Explorer 11 的信息。我们已经确认 Internet Explorer 11 中的一些新特性,包括对 WebGL 的支持、预抓取、预渲染、flexbox、mutation observers 以及其他一些 Web 标准的支持。但是更有趣的是,虽然被叫为 Internet Explorer 11,但它已经不再是 IE 了。

Internet Explorer 11:请不要再叫我 IE

  这也是首次微软真正移除了 Internet Explorer 的一些特性:更改了 user-agent 字符串,这使得很多判断浏览器是否 IE 的代码无法工作,包括有些 JavaScript 的 isIE () 的方法在 Internet Explorer 11 上执行会返回 false。不过好在 Internet Explorer 11 对 Web 标准的支持非常好,因此不再需要之前那些 IE 特定的行为。

  在 Internet Explorer 11 中,user-agent 比之前的版本要短很多,而且去掉了最关键的 MSIE 的关键字

  Internet Explorer 11 的 user-agent:

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

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

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

  上述 user-agent 你还会注意到增加了 Gecko 的标识,而 Safari 是首个标注了 Gecko 的浏览器。

  之前多数使用 MSIE 来判断是否 IE 浏览器的代码都无法工作,可以改用 Trident 字符串来判断。Trident 标识是在 IE9 中引入的。

  此外微软还更改了 navigator 对象:

  navigator.appName 值为 “Netscape”

  navigator.product 值为 “Gecko”

  这或许是一项开发者的诡计,但该行为的确是在 HTML5 中实际指定的。在 HTML5 中要求这两个属性必须返回上述对应的值,这是一个很奇怪的规定的,更奇怪的是 Internet Explorer 11 遵守了这个规定。

  此举导致一些根据 navigator 对象判断浏览器型号的 JavaScript 代码会将 Internet Explorer 11 识别成基于 Gecko 的浏览器。

  document.all 和 friends

  从 IE4 开始,document.all 在 IE 中举足轻重。比起 document.getElementById () 来说,document.all 是 IE 方式的获取元素的引用的方法。尽管 IE5 增加对 DOM 的支持,但 document.all 一直沿用至 IE10。在 Internet Explorer 11 中 document.all 并没有真正被删除,但不推荐使用。

  另外一个要废弃的是 attachEvent () 方法,该方法用于添加事件处理器,对应的 detachEvent () 用来移除事件处理器。这两个方法将在 Internet Explorer 11 中删除。移除这两个方法需要改用如下逻辑:

Internet Explorer 11:请不要再叫我 IE

  当然,建议你优先使用标准的浏览器进行测试以确保不会因为 attachEvent () 的移除而影响代码执行。不过互联网上充斥着各种糟糕的监测代码,你只能确保自己的应用经过良好的标准测试。

  被删除的特性还包括:

  window.execScript () –IE 版本的 eval ()

  window.doScroll () –IE 用来滚动窗口的方式

  script.onreadystatechange –IE 方式的脚本加载完成的事件通知

  script.readyState –IE 方式的测试脚本是否加载完成的状态

  document.selection –IE 方式获取当前选择的文本

  document.createStyleSheet –IE 方式创建样式单

  style.styleSheet –IE 方式引用样式

  所有这些被废弃的方法都有基于标准的替代方法。如果你使用的是标准的方法那恭喜你,可直接支持 Internet Explorer 11。

  结论:

  看起来 Internet Explorer 11 应该是 Internet Explorer 家族最棒的版本。通过最终移除过去一些魔鬼般的错误,微软正在为大家准备一个真正标准的浏览器。

发表评论
用户名: 匿名