再关于IE11

微软在上周刚刚发布了用于Windows 8.1上的首个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的关键字:

上述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的代码实际上还是可以工作。

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

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

被删除的特性还包括:

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

结论

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

更新:document.all并没有真正被删除,但不推荐使用。

时间: 2024-11-18 12:22:24

再关于IE11的相关文章

三张照片解决--win10系统的edge浏览器设置为浏览器IE8,IE7,IE9---完美解决 费元星

主要思想: 第二种方法: 参考文档: 1.可以在系统盘的C:\Program Files\Internet Explorer中找到iexplore.exe,然后将其发送到桌面快捷方式即     可,其就是ie浏览器.2.如果你在刚才的目录中没有找到iexplore.exe,则有可能是因为你得服务没有打开,然后你就要在 控制面板\程     序/启动或关闭windows功能,在其中找到ie11,点击勾选上,然后重启电脑即可.在Win8.1的IE11环境里面,不少网站即使通过兼容视图也无法正常显示,

X-UA-Compatibles

今天在看京东网页代码的时候,发现了X-UA-Compatibles 这个元信息属性,不是很清楚,百度了一下,做下记录 X-UA-Compatible 属性是 IE 浏览器在 IE8 版本开始提供的一个特性,允许开发者通过设置 meta 标记来规定 IE 浏览器在解析网页时使用的文档模式. 通俗点说,这个标签可以实现 IE 浏览器版本模拟. 首先,我们要了解,通过 X-UA-Compatible 属性只能模拟比当前版本更低的版本,并不能模拟高版本. 其次,我们要了解 IE 的文档模式分几种. Qu

IE11浏览器:请不要再叫我IE,谢谢

这篇对自已挺有用的,特mark一下,纯转载. 转载自:nczonline 微软在上周刚刚发布了用于Windows 8.1上 的首个Internet Explorer 11的预览版.我们已经确认Internet Explorer 11中的一些新特性,包括对WebGL的支持.预抓取.预渲染.flexbox.mutation observers以及其他一些Web标准的支持.但是更有趣的是,虽然被叫为Internet Explorer 11,但它已经不再是IE了. 这也是首次微软真正移除了Interne

IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题

你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们就来看看,这个问题的前因后果. 先说下这2次的使用场景,一次是在某页面中,先存Cookie,然后再入库记录相关数据,但是发布到生产环境后,入库操作没有发生:后来通过打印日志发现问题卡在这里: if (Request.Browser.Cookies) 也就是说,在客户端是IE10的环境下,这里返回Fa

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法

如有雷同,不胜荣幸,若转载,请注明 最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在 雅朋网 的一个网友帖子的帮助下解决了问题,也参考了 千寻学习网 的资料,先将解决方法总结如下: 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的

2015第45周五IE11实用开发工具摘录及设置IE缓存

UI响应工具的作用 UI响应工具顾名思义就是查看UI响应时间的工具,通过这个工具可以帮助我们确定应用中的哪些组件占用了多少CPU时间,让我们之后可以更有针对性的进行优化,从而最大限度地改善应用性能,同时提高开发的效率. IE11中的UI响应工具用直观的可视化的形式显示 HTML.CSS 和 JavaScript 的执行情况以及对布局和垃圾回收等方面的影响,树状图表示了每个时间点对CPU的占用率,下方的图形则展示了页面的FPS,也就是每秒钟的帧数,这是我们判断页面丢不丢帧最直观的方法,也就是看页面

开源工作流引擎web设计器Activiti Modeler 5.17.0 与IE11的兼容性探究

一.源码下载 Activiti官网:http://activiti.org/ github:https://github.com/Activiti/Activiti 官网上下载的是lib库文件.文档和网站样例,推荐使用maven管理项目,可以不用下载库文件,直接下载源码,github上源码已经是5.18.0,但是官方还没有发布,从以下网址找到5.17.0的source code下载链接下载即可:https://github.com/Activiti/Activiti/releases,大小为20

js动态加载activeX控件在IE11与低版本IE中的差异

由于IE11更加遵循W3C规范,所以IE11与低版本IE在加载activeX时有差别. 1.IE11中动态加载activeX的顺序 var objectTag = document.createElement("object"); objectTag.style.height = XPlayPluginDivHeight + "px"; objectTag.style.width = XPlayPluginDivWidth + "px"; obj

easyUI,IE11,打开同一界面报错

最近,每次打开编辑页面的时候,ie11总是会报一个错误,有时候ie11还会崩溃,后来跟进去,发现是easyUI这段代码的问题: window.onresize = function() {    $('table[id]').datagrid("resize");} 但是这个错误在其他版本的ie下面没有发生,在其他浏览器里也没有发生. 偶然发现出错的窗口里,有个checkbox,说是不要再显示此信息,点了以后,竟然没有这个现象了. 究其原因,估计还是ie11对脚本的校验可能更加严格,下