转述:Internet Explorer 11:不要叫我IE
我们系统中有个bug是说当用户使用IE 11浏览器访问我们系统时,会有个提示:系统不支持当前浏览器。
查了原因,是因为IE 11改变了以往的User Agent String(简称UA)。
在IE10及以下版本中,UA一般为:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
而到了IE11,则变成了:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
可以看出新的UA主要变化为:去掉了"MSIE",增加了"like Gecko"。
而我们原先JS里判断浏览器类型时认为的IE特征字符串就是"MSIE",而当IE 11去掉了该关键字后,程序判断自然就出错了。
但是随着对IE11了解的深入,发现它不止修改了UA,还删除了我们轻度使用的方法/属性:
- 修改document.all的表现,document.all返回为false,但document.all仍可以获取到元素(待验证),估计很快就会被删掉。
- 删除了attachEvent
- navigator.appName 被写成了 “Netscape”(遵守HTML5规范,IE只能这么做)
- navigator.product 被写成了 “Gecko” (遵守HTML5规范,IE只能这么做)
- 删除了window.execScript() – IE’s own version of eval()
- 删除了window.doScroll() – IE’s way of scrolling the window
- 删除了script.onreadystatechange – IE’s way of telling of listening for when a script was loaded
- 删除了script.readyState – IE’s way to test the load state of a script
- 删除了document.selection – IE’s way of getting currently selected text
- 删除了document.createStyleSheet – IE’s way to create a style sheet
- 删除了style.styleSheet – IE’s way to reference a style sheet from a style object
然后建议是:不检测浏览器类型,而改为检测特性(而特性检测应该是jQuery的范围,我们不用特别关心)。
另外一件事情需要开发人员知悉的是:jQuery 2.0及以上版本就不支持IE 6,7,8了。所以现在jQuery有两个分支,一个是1.x一个是2.x。
原文请见Internet Explorer 11 Don 't Call Me IE
更多信息:
- ← Previous
SQL Server:请不要在新创建的表中使用NText - Next →
HHKB键盘布局及指法图