如何设置IE浏览器模式而不是设置文档模式?为什么是浏览器模式和文档模式?我们使用这两种不同模式的目的是什么?
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
它只会改变文档模式。是否可以以编程方式更改 IE 浏览器模式?
如何设置IE浏览器模式而不是设置文档模式?为什么是浏览器模式和文档模式?我们使用这两种不同模式的目的是什么?
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
它只会改变文档模式。是否可以以编程方式更改 IE 浏览器模式?
这两种模式做两件不同的事情:
文档模式决定了IE 如何呈现页面。
浏览器模式决定了 IE 如何识别自己——即它的用户代理字符串。
该X-UA-Compatible
标志设置文档模式。无法通过代码单独显式设置模式;这只能在开发工具中手动完成。(但见下文‡)
这意味着,如果您依赖用户代理字符串来识别浏览器,那么 usingX-UA-Compatible
会给您带来不正确的结果,因为浏览器识别自身的方式与其实际呈现的方式不同。
所有这一切的结果是您应该避免使用用户代理字符串来识别浏览器;它可以骗你,而且经常这样做。
如果可能的话,避免使用X-UA-Compatible
强制 IE 使用兼容模式也是一个好主意——如果您发现自己需要兼容模式,那是因为您的网站在旧 IE 版本中比在新版本中运行得更好。鉴于较新的版本更符合标准,这可能意味着您的代码中有需要修复的错误。理想情况下,您应该修复这些错误,而不是切换到兼容模式;兼容模式只能作为最后的手段使用。
( ‡ ) 值得注意的是,即将发布的 IE11 中的这一变化将在大多数情况下移除通过开发工具设置浏览器和文档模式的能力。IE 开发人员正试图减少人们使用兼容模式的动机,并鼓励人们编写更多符合标准的代码。