强制IE8或IE9文档模式为标准

时间:2012-12-15 21:02:37

标签: html cross-browser internet-explorer-9 ie8-browser-mode

好的抱歉在这里直言不讳但我在过去的两年里一直在开发IE 8和IE9,似乎无法做到这一点。我在abhor公司工作并为他们的网站开发。出于某种原因,IE8或IE9默认为较低的文档模式,如ie7或ie8。我已经尝试了一切......

1)放置HTML 5 doctype而不是别的。根据微软的说法,这应该足够了 2)将html5 doctype和x-ua兼容的元标记放在标题下的页面中,并分别设置为边缘或IE8或IE9。

我的页面看起来像这样

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7">
<![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-  ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <!     [endif]-->
<!--[if gt IE 8]> <html class="no-js"> <!   [endif]-->

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible"    content="IE=edge,chrome=1">

这真的令人沮丧,因为我读到的一切都说应该有用。微软声称这将工作,甚至只是设置HTML 5 doctype将起作用。我听说要设置一个http标头来修复但老实说,微软是否认真?我发现很难相信开发人员需要更改他们的apache设置以添加http标头以使页面呈现我是标准模式

有人可以帮我吗?我错过了什么?我真的开始讨厌微软甚至更多!!!!!

UPDATE ::

我最近发现我的公司已经检查了“在兼容性视图中显示内部网站点”并且看起来我想如果我取消选中它然后它将正常工作。但是,这不是解决方案!无论我在哪里阅读,我都会看到,如果您看到与X-UA兼容的元标记或http标头,它应该优先。这是一个完整的谎言。有没有人有答案?我知道外部用户会很好但是我的业务正在测试这个并且他们提出问题是因为它们是内部的并且很难说服他们并且告诉他们取消选中框。它没有给他们很好的感觉。此外,我不能让桌面工程团队删除它,因为它已经到位,因为内部的旧应用程序不会被编写为支持IE8,9所以他们需要它。

感谢任何帮助。谢谢!

由于

3 个答案:

答案 0 :(得分:8)

我们的Intranet也被锁定,兼容性视图用于所有Intranet站点,并使用IE 8,因为它们都是Windows XP。

我发现,一旦IE 8开始处理标准锅炉板条件注释(以确定要附加到<html>标签的哪个类),那么游戏就结束了:IE在此时决定它在兼容模式下运行(IE 7)我无能为力将恢复这种情况。

我发现将<meta>标记放在<!DOCTYPE>标记之后,它完全符合预期:

<!DOCTYPE HTML>
<meta http-equiv="x-ua-compatible" content="IE=Edge">

对我而言,这似乎并非“标准”,但它确实有效。我喜欢这样做的任何其他方法,<meta>标记可以放在<head>中,因为我试了好几个小时。

答案 1 :(得分:1)

您的代码的第5行和第6行出错,因为@JaredFarrish在评论中注释,该页面在IE上显示为空白。

在第5行的末尾,从

中删除空格
<!     [endif]-->

在第6行结束时,更改

<!--<!   [endif]-->

<![endif]-->

在您的实际页面上,稍后代码中可能会有一些内容阻止错误构造在IE上导致跳过。

目前还不清楚是什么让IE进入Quirks模式。需要更多信息来解决此问题。它甚至可能取决于页面所在的域,因此公开URL可能会有所帮助。有关一般性,请参阅IE8 and IE9 Complications(在设置浏览器模式下)。

答案 2 :(得分:0)

Ralph Bacon的回答只是为我解决了这个问题。我们使用的html5样板没有任何问题。 如果您的Intranet正在使用兼容模式,那么您应该放置此

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

之后

<!DOCTYPE HTML>

总的来说,你的标题看起来像这样:

<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang=""> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8" lang=""> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9" lang=""> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en">
<!--<![endif]-->