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

[javascript]  view plain copy
  1. Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

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

[javascript]  view plain copy
  1. 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

    从 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 的方法将可能导致执行失败,尽管使用了 document.all 的代码实际上还是可以工作。[3]

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

    [javascript]  view plain copy
    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. }
    7. }

    当然,建议你优先使用标准的浏览器进行测试以确保不会因为 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 家族最棒的版本。通过最终移除过去一些魔鬼般的错误,微软正在为大家准备一个真正标准的浏览器。

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

    参考资料

    1. Internet Explorer 11 preview guide for developers (MSDN)
    2. Navigator Object – Client Identification (HTML5)
    3. Obsolete – Behavior of document.all (HTML5)
    4. Internet Explorer 11 界面截图

    via nczonline/oschina翻译

  • 相关链接

    • Internet Explorer 的详细介绍:请点这里
    • Internet Explorer 的下载地址:请点这里

    文章转载自:开源中国社区 [http://www.oschina.net]

Internet Explorer 11: “请不要再叫我 IE”相关推荐

  1. Internet Explorer 11:不要再叫我IE

    上周,Internet Explorer 11搭载Windows 8.1预览版而来,相信很多浏览迷也已经在使用中.Internet Explorer 11 Preview 改进了与 Web 标准.其他 ...

  2. Internet Explorer 11 Enterprise Mode 排错

    在开始本章内容之前,先探讨一下以下几种场景:企业客户端由Vista\xp升级到Windows 7.8.8.1.10后:企业Windows 7客户端补丁更新或Windows 8.1 更新:个人用户补丁自 ...

  3. Internet explorer 11浏览器找回(仅win10)

    我一比较啰嗦,二比较懒.前方一堆屁话,正文移步到第二段!!! 难受,难受,我现在好冷,为什么空调对着我吹,我都快冻死了,关了别人还得嫌闷,我一个乙方驻场还不能说"给我换位位置吧,你家这破空调 ...

  4. 在Win10系统中使用独立浏览器 Internet Explorer 11 的解决方案(原创)

    一.前言:     2022年6月15日,微软终止了对IE浏览器的服务支持,然后将IE的部分功能集成到Edge浏览器的IE模式,并试图限制IE作为独立浏览器的使用.许多Windows老手不喜欢这种解决 ...

  5. win7 卸载 Windows Internet Explorer 11

    1.单击"开始"按钮,在搜索框中键入"程序和功能搜索",然后单击左窗格中的"查看已安装的更新". 2.在"卸载更新"下, ...

  6. 现在可以下载适用于Windows 7和Windows Server 2008 R2的Internet Explorer 11稳定版

    Whether it is simply making your family members' systems more secure or updating the browser of choi ...

  7. 如何停止Internet Explorer 11的建议站点?

    Internet Explorer automatically suggests addresses and search results based on the partial address y ...

  8. Internet Explorer 11内置浏览器的下载

    Setting - Apps - Option features

  9. 下载 Internet Explorer 11(脱机安装程序)

    https://support.microsoft.com/zh-cn/help/18520/download-internet-explorer-11-offline-installer

最新文章

  1. C++多线程之间,线程函数启动之后,多线程依赖的启动和线程唤醒操作。
  2. Dynamics CRM 开启EmailRouter日志记录
  3. 找斐波那契数列中的第N个数——递归与函数自调用算法
  4. jQuery Sizzle选择器(一)
  5. php oracle 锁表,频繁使用的一张表经常好被锁死?怎样处理!
  6. android调用系统相机图片不旋转,Android 处理调用系统相机生成的被旋转图片
  7. 【广州/深圳 活动】 MVP社区巡讲
  8. Java 8默认方法可能会破坏您的(用户)代码
  9. Python list倒序遍历(reversed )
  10. PetShop 4.0 官方详解
  11. java调试报告_java,生成测试报告.docx
  12. 软考之---软件设计师考试经验与笔记分享
  13. ibm tivoli_IBM Tivoli Directory Server中的安全复制
  14. php 圆角的度数计算,【圆角度的计算公式是什么】-圆的角度公式-数学-沃捍瞻同学...
  15. python 入门书籍-入门python有什么好的书籍推荐?
  16. 黄褐斑的食疗用什么,姬净美效果不错
  17. 世界各国国旗及国家名称
  18. 详解:海盗分赃(25 分)
  19. 4、Linux:如何在zip压缩文件中搜索指定内容
  20. 维克森林大学计算机科学,W 同学_维克森林大学_计算机_录取成功案例分享

热门文章

  1. 你不是我,怎知我走过的路:伤感日志
  2. c语言getchar函数的作用,c语言中getchar的用法函数用法
  3. Android Studio创建项目Error:Server returned HTTP response code: 403 for URL
  4. 冷漠的心 在那一刻复苏
  5. ARFoundation系列讲解 - 76 AR室内导航一
  6. 我们究竟应该如何学习编程
  7. 把Excel表格通过MySql Workbench导入数据库表中的使用总结
  8. 服务器安装nginx详细步骤( 小白都能看懂,亲测可行)
  9. Windows10系统中Foxmail修改密码之后登录一直提示密码错误
  10. AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘/home/yolov5/models/comm