如何强制Internet Explorer在标准模式下呈现,而不是在怪癖?
我正在编写一个在IE7标准模式和IE8标准模式下运行良好的前端。
当我启动Internet Explorer并加载页面时,IE7和IE8直接进入怪异模式。 如何强制IE7和IE8始终在标准模式下加载页面?
到目前为止,我还没有添加特殊的meta标签。
谢谢你帮助我
编辑:我的文档types和目前看起来如下:
<!DOCTYPE html> <html lang="de"> <head> <title>...</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta charset="utf-8" /> <script src="js/html5.js"></script> (...) </head>
这是绝对肯定的方式:
<!doctype html> <!-- html5 --> <html lang="en"> <!-- lang="xx" is allowed, but NO xmlns="http://www.w3.org/1999/xhtml", lang:xml="", and so on --> <head> <meta http-equiv="x-ua-compatible" content="IE=Edge"/> <!-- as the **very** first line just after head--> .. </head>
原因:
每当IE遇到任何冲突的时候,就会回到“IE 7标准模式”,忽略了与x-ua-compatible
。
(我知道这是一个非常古老的问题的答案,但是我自己也一直在努力,上面的scheme是正确的答案,它每次都是有效的)
可悲的是,他们希望我们使用标签让浏览器知道该怎么做。 看看这个文档,它告诉我们使用:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
它应该做的。
-
在页面的开头使用html5文档types。
<!DOCTYPE html>
-
强制IE使用最新的渲染模式
<meta http-equiv="X-UA-Compatible" content="IE=edge">
-
如果您的目标浏览器是ie8,那么在IE8中检查您的兼容设置
我详细的博客
添加正确的doctype声明并避免XML prolog应该足以避免怪癖模式 。
我知道这个问题在2年前被问过,但还没有人提到过这个问题。
最好的方法是使用一个http头
将元标记添加到头部并不总是有效,因为IE可能在读取之前确定了模式。 确保IE始终使用标准模式的最好方法是使用自定义的http头。
标题:
name: X-UA-Compatible value: IE=edge
例如,在一个.NET应用程序中,你可以把它放在web.config文件中。
<system.webServer> <httpProtocol> <customHeaders> <add name="X-UA-Compatible" value="IE=edge" /> </customHeaders> </httpProtocol> </system.webServer>
HTML5 Doctype可能会导致您在旧版浏览器中遇到问题。 这也可以归结为与HTML5 shiv相关的一些奇怪的东西。
您可以尝试切换到其中一个XHTML文档types,并至less暂时相应地更改标记。 这可能会让你缩小问题的范围。
当这些IE切换到怪癖模式时,你的devise是否打破? 如果你的CSS导致奇怪的显示,那么在CSS上工作可能是值得的,所以即使浏览器切换模式,站点看起来也是一样的。
- 在IE中调用jQuery ajax调用“无传输”错误
- 当附加查询string参数或使用POST不是一个选项时,如何避免Internet Explorer 11中的AJAXcaching
- 在Internet Explorer中,“JSON”是JavaScript中的未定义错误
- getSelection()不能在IE中工作
- SCRIPT5009:“JSON”未定义
- 如何在IE8中使Google Maps半透明PNG图块层工作?
- 在Javascript中克隆一个文件input元素
- 如何修复JavaScript的Internet Explorer浏览器中的Array indexOf()
- 如何使用JavaScript检测Internet Explorer(IE)和Microsoft Edge?