IE11浏览器特性改变
来源:互联网 发布:sql with语句 编辑:程序博客网 时间:2024/05/01 22:25
IE11浏览器:请不要再叫我IE,谢谢
2013-7-3 11:14:19 出处:nczonline(开源中国翻译) 人气:18882次 评论(56)IT之家(www.ithome.com):IE11浏览器:请不要再叫我IE,谢谢
微软在上周刚刚发布了用于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特性之button
- 浏览器兼容如何IE11
- 识别IE11浏览器
- IE11浏览器缓存bug
- IE11浏览器缓存bug
- 检测浏览器版本包括IE11
- 判断浏览器是否为 IE11
- IE11浏览器F12无法使用
- 多浏览器支持之 IE11【让程序支持IE11】
- IE11文档模式默认值改变方法
- js判断IE浏览器(包括IE11)
- js检测各个浏览器版本,包括IE11
- js获取浏览器类型(包含IE11)
- win7 IE11浏览器怎么降至IE8?
- IE11之访问localhost浏览器关闭
- 判断浏览器的类型(ie11之后)
- 判断浏览器个版本 到ie11
- SetUnhandledExceptionFilter无法捕获异常原因及解决方法
- 错误 0019: EntityContainer 名称必须唯一
- ARM Linux 3.x的设备树(Device Tree)
- OCP-1Z0-053-200题-71题-648
- Memcached缓存
- IE11浏览器特性改变
- Linux 有趣命令
- Linux时间函数
- 万网域名查询接口
- DataGrid负值
- C++编程规范 读书笔记(下)
- JavaScript类属性的访问方式
- Ext.onReady jQuery(document).ready(function() 哪个先执行
- Java™ Native Interface (JNI)【读书笔记2】