如何强制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" > 

它应该做的。

  1. 在页面的开头使用html5文档types。

    <!DOCTYPE html>

  2. 强制IE使用最新的渲染模式

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

  3. 如果您的目标浏览器是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上工作可能是值得的,所以即使浏览器切换模式,站点看起来也是一样的。