IE下的浏览器模式和文档模式。

360安全浏览器下的IE兼容模式。

有童鞋是在上边遇到的问题。她打开IE浏览器默认的是IE9的浏览器模式,但是文本模式是IE7。

【解决】IE9的默认就是IE9标准模式啊,你可能是启用了组策略里的【打开Internet Explorer 7标准模式】功能。禁用就行~

开始菜单 - 运行 - 输入gpedit.msc后确定 - 用户设置 - 管理模板 - Windows组件 - Internet Explorer - 兼容性试图 - 在右边找到“打开Internet Explorer 7标准模式选择”,双击打开,选择“已禁用” - 确定
PS:F12开发人员工具里只是调试工具,重启IE后是不会记住相关设置的。

但是还是需要解决掉因为文本模式带来的bug,解决思路是:document.documentMode。
有几种返回值:
  • 5   ----- in IE5 mode
  • 7   ----- in IE7 mode
  • 8   ----- in IE8 mode
  • 9   ----- in IE9 mode
不过,该属性只有在IE8+的浏览器上支持。不过这已足够。这样就可以排除在高版本浏览器模式下,出现低版本文本模式上出现的hack问题。

总结:有时候只判断navigator.userAgent 并不能解决问题,那么就用documentMode来处理吧。


【扩展1】

浏览器模式用于切换IE针对该网页的默认文档模式、对不同版本浏览器的条件注释解析、以及发送给网站服务器的用户代理(User-Agent)字符串的值。网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和及安装的功能,这样就可以根据不同的浏览器返回不同的页面内容了。

文档模式用于指定IE的页面排版引擎(Trident)以哪个版本的方式来解析并渲染网页代码。切换文档模式会导致网页被刷新,但不会更改用户代理字符串中的版本号,也不会从服务器重新下载网页。切换浏览器模式的同时,浏览器也会自动切换到相应的文档模式。

即浏览器模式是看浏览器Agent的版本号的,而文档模式是可以重新渲染页面的。

【扩展2】
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
在IE8及以后的的IE浏览器中,支持X-UA-Compatible头,可以通过在服务器端设置HTTP头,或者在页面中插入<meta>标签来实现。
这种方法主要是防止老的页面在较新的浏览器中显示不正常的情况的, 比如上面的代码可以强制IE8以上版本的浏览器以IE7的模式进行渲染。


不建议使用喽~


原文地址:https://www.cnblogs.com/hanyuxinting/p/4347427.html