再关于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并没有真正被删除,但不推荐使用。
再关于IE11的更多相关文章
- IE11新特性 -- Internet Explorer 11:请不要再叫我IE
Internet Explorer 11 中的一些新特性,包括对WebGL 的支持.预抓取.预渲染.flexbox.mutationobservers 以及其他一些 Web 标准的支持.但是更有趣的是 ...
- IE11-IE不再任性了-关于attachEvent
今天解决了一个IE11的兼容问题,关于attachEvent的. 控件是ActiveX的,需要监听一个控件相关的事件.蓦然发现attachEvent在IE11不支持了...attachEvent不是I ...
- 三张照片解决--win10系统的edge浏览器设置为浏览器IE8,IE7,IE9---完美解决 费元星
主要思想: 第二种方法: 参考文档: 1.可以在系统盘的C:\Program Files\Internet Explorer中找到iexplore.exe,然后将其发送到桌 ...
- win下IE设置
当win7系统时需要升级IE为11版本,需要先安装sp1版本补丁,再装IE11,若还是装不了,可借助第三方平台(电脑管家等)升级安装.或 更新系统再安装IE11 https://jingyan.bai ...
- X-UA-Compatibles
今天在看京东网页代码的时候,发现了X-UA-Compatibles 这个元信息属性,不是很清楚,百度了一下,做下记录 X-UA-Compatible 属性是 IE 浏览器在 IE8 版本开始提供的一个 ...
- IE11浏览器:请不要再叫我IE,谢谢
这篇对自已挺有用的,特mark一下,纯转载. 转载自:nczonline 微软在上周刚刚发布了用于Windows 8.1上 的首个Internet Explorer 11的预览版.我们已经确认Inte ...
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们 ...
- 修复IE11首页被恶意篡改的问题
前几天为了测试一个程序,把系统换成了Windows10,Windows10自带了微软的新浏览器Edge和IE11,用来其实也没什么太多感觉了,我习惯于Chrome,但有些东西还是得用IE,比如网银之类 ...
- 企业IT管理员IE11升级指南【17】—— F12 开发者工具
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
随机推荐
- 修改Sharepoint 文档库列表点击Excel文件默认跳转到Excel Service服务 xlviewer.aspx页面
在Sharepoint 文档库中,当点击库中的一个Excel文件时,Sharepoint默认为转跳到Excel Services上,无论是Sharepoint 的是否开启了Excel Service, ...
- ORACLE创建OEM是老爱报的错误【weber出品】
还是采用静默安装,手工建库完成后.在安装的OEM的时候一直报这个错误.这里稍微记载以下解决方案: Database connection through listener failed. Fix th ...
- Java中int和String互相转换的多种方法
1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
- 实例讲解MySQL联合查询
好了终于贴完了MySQL联合查询的内容了,加上上一篇一共2篇,都是我转载的,实例讲解MySQL联合查询.那下面就具体讲讲简单的JOIN的用法了.首先我们假设有2个表A和B,他们的表结构和字段分别为: ...
- flask开发restful api系列(3)--利用alembic进行数据库更改
上面两章,主要讲基本的配置,今天我们来做一个比较有趣的东西,为每个客户加一个头像图片.如果我们图片保存在自己的服务器,对于服务器要求有点高,每次下载的时候,都会阻塞网络接口,要是1000个人同时访问这 ...
- Visual studio 内存不足的解决方案(out of memory)
编译Visual Studio项目,如果出现"out of memory "的编译错误,可以进行如下操作,加大应用程序可以使用的内存. 请先备份好系统和设置好系统还原点,大体步骤是 ...
- Linux的标准输出、标准错误输出、nohup
1.在bash中标准输出可以用1来表示:通常来说这个1可以省略: 如./xxx >/dev/null 和 ./xxx 1>/dev/null 是一个意思 2.在bash中标准错误输出可以用 ...
- div 居中进行总结
1.margin:auto ;让元素居中,需要确定元素的宽度,并且需要是块元素 eg: div { width:200px; height:200px; background:#222; margin ...
- iOS开发:UILabel无法响应点击事件的问题
UILabel 是默认关闭用户的交互的 即: _contentLabel.userInteractionEnabled = NO; 修改之后: _contentLabel.userInteractio ...
- AMS1117典型电路
AMS1117(3.3V.5V) 封装: 常见应用连接: 1.输入旁路电容Input Bypass Capacitor:A 10uF tantalum on the input is a suitab ...