Internet Explorer 11 浏览器介绍:别叫我IE

在上个星期,微软随Windows 8.1正式推出了Internet Explorer 11的第一次预览版。这样,关于这款备受争议的web浏览器泄露版本的各种传闻也该休息了。我们现在已经知道一些关于Internet Explorer 11的重要的细节,包括支持WebGL ,prefetch(译者注:预读取,比如上传文件的预览啥的,不知道翻译的对不对),prerender(预呈现), flexbox,mutation observers和其他web标准,也许在IE11中更有趣的是,它是不是IE。

长期以来,微软第一次从Internet Explorer浏览器中移除了一些特征。user-agent字符串也更改了。看来,微软已经抛弃了自己的方式,这样现有的检测IE的代码分支在Internet Explorer 11浏览器中都将返回false,无论是在 javascript里还是服务器上。

User-agent的改变

相对于以前的版本,Internet Explorer 11的user-agent字符串更短,而且还有一些有意思的变化:

代码如下:

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

对于在Windows 7上Internet Explorer 10的user-agent字符串

代码如下:

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

最明显的区别是,一直存在Internet Explorer浏览器user-agent字符串的“MSIE”标记去掉了。同样引人注目的是在user-agent的尾部添加了“like Gecko”。这表明Internet Explorer宁可被识别为Gecko浏览器,也不愿被识别为Internet Explorer自己。Safari是第一个添加“like Gecko”的浏览器,这样任何人都可以嗅探user-agent字符串里面的“Gecko”字符允许浏览器通过。

现在任何查找“MSIE”的嗅探代码在新的user-agent字符串下不能工作。你仍然可以搜索“Trident”字符来确定它是IE浏览器(“Trident”标识是随着Internet Explorer推出来的)。Internet Explorer的真正版本通过“rv”来标识。

此外,navigator对象的信息也有一些变化,这样更掩饰了正在使用的浏览器的。

navigator.appName 被设置为“Netscape”
navigator.product被设置为 “Gecko”

这可能看起来像企图偷偷摸摸欺骗开发人员,但是这些实际上是HTML5指定的。navigator.product属性必须为“Gecko”,同时navigator.appName也应该是“Netscape”或者更具体的。但Internet Explorer 11缺遵循了这个奇怪的建议。

navigator信息的更改导致的副作用,正在使用的基于Javascript逻辑的浏览器检测将可能无法使用,导致 Internet Explorer 11识别为基于Gecko的浏览器。

document.all和他的朋友们

从IE4以来,document.all在IE浏览器中无所不能。此前实行的document.getElementById()类似,document.all是得到一个DOM元素引用的IE方式。尽管从IE5开始到IE10,document.all都保持着对 DOM的支持。然而在11中,这个时代遗留下来的产物已经被设置为返回false,这就意味着任何基于document.all的代码分支判断在IE11中将失败,即使代码实际使用document.all能正常工作。

另一个遗留是添加事件函数的attachEvent(),类似于detachEvent()方法。这个方法已经从IE11中移除了。移除这些方法,是为了避免一些逻辑判断,比如:

代码如下:

function addEvent(element, type, handler) {
    if (element.attachEvent) {
        element.attachEvent("on" + type, handler);
    } else if (element.addEventListener) {
        element.addEventListener(type, handler, false);
    }
}

当然,我们推荐你最好用来测试的版本是一直稳定,符合标准的。在某种层面上说,移除attachEvent方法不会产生任何地不适应。然而,互联网充斥着槽糕的特征检测逻辑代码。attachEvent方法的删除确保任何以上述方式编写的代码将使用标准的版本,取代IE特有的方法。

其他一些被移除的特征:

window.execScript()——eval()方法的IE版本

window.doScroll()——IE窗口的滚动方法
script.onreadystatechange——IE中监听加载脚本的状态更改
script.readyState——IE中脚本加载的状态
document.selection——IE中当前选中的文本
document.createStyleSheet——IE中创建样式表文挡
style.styleSheet——IE浏览器中引用一个样式表的样式对象
所有这些IE浏览器的方式都被标准的特征所取代。在移除这些特征和方法后,基于标准功能特征检测的跨浏览器代码在不改变的情况下依然可以正常运行。

结论
在很长的时间段内,IE11可能是最好的IE浏览器。微软终于开始准备消除过去犯的错误,准备开始从包括基于现在标准的浏览器做起。删除旧的特征和修改不被认定为IE浏览器的用户代理字符串是一个很独特的做法,它确保所有的网站能继续工作。如果Web应用程序使用功能检测,而不是浏览器嗅探,那么代码应该可以IE11中运行。对于使用user-agent嗅探的应用,用户仍然能看到一个功能完好的网站,因为IE11对标准支持的十分优秀。

一个没有IE分支代码的未来即将到来,让我们一起期待。

(2013-7-2更新),修订提到的document.all实际上并未删除,而改为falsy

好久没翻译文章了,这次翻译的是 Nicholas C. Zakas大牛的Blog,
原文在这:http://www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-call-me-ie/
(0)

相关推荐

  • Internet Explorer 11 浏览器介绍:别叫我IE

    在上个星期,微软随Windows 8.1正式推出了Internet Explorer 11的第一次预览版.这样,关于这款备受争议的web浏览器泄露版本的各种传闻也该休息了.我们现在已经知道一些关于Internet Explorer 11的重要的细节,包括支持WebGL ,prefetch(译者注:预读取,比如上传文件的预览啥的,不知道翻译的对不对),prerender(预呈现), flexbox,mutation observers和其他web标准,也许在IE11中更有趣的是,它是不是IE. 长

  • ibm官方资料把应用程序从 Internet Explorer 迁移到 Mozilla第1/2页

    Netscape 最初开发 Mozilla 浏览器的时候,明智地决定支持 W3C 标准.因此,Mozilla 和 Netscape Navigator 4.x 以及 Microsoft Internet Explorer 遗留代码不完全向后兼容,比如后面将提到 Mozilla 不支持 <layer>.Internet Explorer 4 这些在 W3C 标准的概念出现之前建立的浏览器继承了很多古怪之处.本文中将讨论 Mozilla 的特殊模式,它为 Internet Explorer 和其他

  • 小心!Internet Explorer新漏洞

    安全机构Secunia有新的消息有关微软的Internet Explorer,Secunia指出Internet Explorer新的问题已经呈现出来,而且所有的这些都是非常的严重的,并且所有的这些潜在的问题都将会对Internet Explorer的使用者造成重大的破坏. 第一个问题涉及到IE未能对从Internet上传送到本地的一些项目进行效验.IE未能对图像或者其他媒体所隐含的HTML编码进行效验,这样会造成站点能够将HTML编码植入到使用者的系统中,随后可以让这些HTML编码在本地被执行

  • 用vbs返回 Internet Explorer 的下载控件和 Applet 的列表

    问: 嗨,Scripting Guy!要找出已为 Internet Explorer 下载了哪些程序,有没有简便的方法(这些项目在文件夹 C:\Windows\Downloaded Program Files 中)?我可以使用一个脚本获得可执行文件名和依存文件,但是我想获得它们显示在文件夹中的文件名. -- AC 答: 您好,AC.当您下载了 ActiveX 控件或 Java 小程序时,这些项目通常会放置在"Downloaded Program"文件夹中.您可以在 Windows 资源

  • IE autocomplete internet explorer's autocomplete

    IE autocomplete internet explorer's autocomplete Frequently people are confused by the various dropdown quick-complete boxes in IE.  Most people lump them all under the term "AutoComplete."  There are actually several features in play, and today

  • 开发 Internet Explorer 右键功能表(ContextMenu)

    参考 MSDN Library[Adding Entries to the Standard Context Menu]开发 ContextMenu 1. IE 额外的 ContextMenu 是透过註册机码 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt 来建立 2. 所以只要在该位置下新增一个 Key 值,例如:新增[Make 0rz]则 IE 中按下右键就会出现相同名称的功能 3. 如果我们想要在该功能上可以使用

  • 用vbs更改 Internet Explorer 的标题栏

    问: 您好,脚本专家!最近我注册了新的 Internet 服务,现在每次我启动 Internet Explorer 时窗口标题显示 Internet Explorer 由 Fabrikam.com 提供.如何更改 Internet Explorer 的标题栏? -- AD 答: 您好,AD.您知道,您的问题让脚本专家在道德和伦理方面进退两难.在我们收到您的电子邮件的同时,我们收到了另一封电子邮件,其内容如下: "您好,脚本专家!我知道许多公司配置了 Internet Explorer,从而其用户

  • 用vbs实现重新启动 Internet Explorer

    问: 您好,脚本专家!如果未运行其他实例,如何重新启动 Internet Explorer? -- MT 答: 您好,MT.多谢您的问题.您知道,如今每个人都在挑剔可怜的 Internet Explorer 的毛病(尽管大多数 Windows 用户仍在使用 Internet Explorer).但现在有人提出了一个问题,他想确保 Internet Explorer 始终正常运行.看见了吧,Internet Explorer:还有人喜欢你! 尽管我们本来要为 Internet Explorer 而

  • 用vbs检测Internet Explorer 中是否启用了 ActiveX

    问: 您好,脚本专家!如何知道 Internet Explorer 中是否启用了 ActiveX? -- JV 答: 您好,JV.您一定要问这个问题,是吗?实际上,这并不是一个特别难回答的问题,只是有点复杂.不过,那与配置 Internet Explorer 的方式紧密相关,而与通过编写一个脚本来检索此信息关系不大. 首先,Internet Explorer 没有管理对象模型:相反,我们能够通过编程的方式检索 Internet Explorer 设置和属性值的唯一方法就是通过编写一个脚本来从注册

  • Internet Explorer 8 RC1 下载地址(英文版)

    Internet Explorer 8 RC1 各版本(目前只有英文版)下载地址: Windows Internet Explorer 8 Release Candidate 1 for Windows Vista 32-bit Windows Internet Explorer 8 Release Candidate 1 for Windows Vista 64-bit Windows Internet Explorer 8 Release Candidate 1 for XP 32-bit

随机推荐