不是IE的IE11
来源:互联网 发布:杭州淘宝运营培训机构 编辑:程序博客网 时间:2024/05/18 03:34
原文:http://yanni4night.com/2014/05/02/ie11-as-not-ie/
@2014-05-02
@keywords:IE,Internet-Explorer,Microsoft,userAgent,ActiveXobject,Trident,cors,spdy,flex,document.all
Internet Explorer 11
(IE11) 自去年六月份发布以来虽然据说也取得了不错的成绩,但在中国好像还看不到其占有率。获取 IE11 可以从两种方式:安装 Win8
,自带 IE11;从 Win7
的 IE9/10 升级,但 XP
在中国仍然有超过60%的占有率,而 XP
最高也只能升级到 IE8
。
前端测试仍在徘徊在 IE6 ~ IE10 之间,但在开发过程中偶然间发现了 IE11 与众 IE 不同之处。
前端开发一直将浏览器分为 W3C 和 IE 两种,特别是将 IE 众版本当做异类对待。微软这次决定洗心革面,将 IE11 打造成一款不是 ‘IE’ 的浏览器,拥有与其它 ‘W3C’ 浏览器一样的特性。
重要变动
IE11 支持了完整的 flex
能力(参见利用flexbox构建可伸缩布局),于 Firefox 之后第二个拥有无前缀 CSS 属性名。
支持了 SPDY 协议。
ActiveXObject
对象不再存在了,这使得许多依靠检测该对象来嗅探浏览器类型的代码失效。
同样,document.all
的布尔值也会返回 false 。许多浏览器拥有该对象但是在转成布尔值时故意返回 false 用以兼容之前无数使用该对象判断浏览器类型的代码。现在,只有 IE6~9 会返回 true。
UA中一直存在的 MSIE
被删除,依赖于此获取浏览器类型和版本号的代码将失效。要判断其类型和版本,必须 MSIE
和 Trident
共用了。
移除了 attachEvent
,以 addEventListener
取代之,这也会破坏使用该方法判断浏览器类型的代码。
IE8 引入的 XDomainRequest 被删除,取而代之的是支持跨域资源共享(CORS)的 XMLHttpRequest
。
总结
显然 IE11 的改进破坏了几乎所有用于区分 W3C
和 IE
浏览器的方法,使得无数现存代码无法取得其是 IE 浏览器的事实。或许这就是微软的目的:IE11 不再是 ‘IE’ 了,你不需要在判断出来它了。
下面给出使用 UA 获取 IE 版本的代码:
/** * Get version if it's a microsoft internet explorer. * * @return version code,or else null if it's not a IE. */function getIEVersion(){ var ua = navigator.userAgent,matches,tridentMap={'4':8,'5':9,'6':10,'7':11}; matches = ua.match(/MSIE (\d+)/i); if(matches&&matches[1]) { //find by msie return +matches[1]; } matches = ua.match(/Trident\/(\d+)/i); if(matches&&matches[1]) { //find by trident return tridentMap[matches[1]]||null; } //we did what we could return null;}
由于 UA 可以随意伪造,所以并没有合适的方法能够保证检测出真正的浏览器环境,因此代码都不应依赖于具体的环境和版本。
参考
- http://msdn.microsoft.com/en-us/library/ie/bg182625(v=vs.85).aspx
- 不是IE的IE11
- IE11的内核不是FF(Gecko(Firefox内核))内核哦..
- 将Windows的IE11降级为原先的IE版本
- JS如何判断包括IE11在内的IE浏览器
- JS如何判断包括IE11在内的IE浏览器
- JS如何判断包括IE11在内的IE浏览器
- JS如何判断包括IE11在内的IE浏览器
- js如何判断IE浏览器的版本包括IE11
- Windows 7 系统的旧版IE浏览器升级到IE11
- 【IE11】兼容低IE版本的设置方法
- IE11中OCX控件的事件不能够被IE捕获的解决办法
- 解决Windows 7下IE11无法卸载、无法重新安装,提示安装了更新的IE版本
- 解决Windows 7下IE11无法卸载、无法重新安装,提示安装了更新的IE版本
- JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
- js判断IE浏览器(包括IE11)
- 判断是否是IE(包含IE11)
- 命令行 降低IE版本 IE11降到IE8
- IE11的变化
- LeetCode练习一:Single Number
- 利用flexbox构建可伸缩布局
- poj 1459 zoj 1734 Power Network(最大流)
- IE11 - Javascript 无法取得嵌套弹出框的返回值 - KB3008923
- 如何查看linux系统是32位还是64位
- 不是IE的IE11
- 在linux服务器上lamp环境中怎样安装php的扩展模块
- Apache反向代理到Jetty
- volatile——多线程程序员最好的朋友
- 查看ogg目的端的server进程
- operator new,new operator, placement new
- 对PHP安全有帮助的一些函数
- 从现在开始,做个简简单单的程序狗就好
- HTML DOCTYPE 标签