2

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

1) 放置 HTML 5 doctype,仅此而已。根据微软的说法,这应该足够了 2) 将 html5 doctype 和 x-ua-compatible 元标记放在页面标题下的第一个位置,并分别设置为 edge 或 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 标头以使页面呈现我是标准模式

有人可以在这里帮助我吗?我错过了什么???我真的开始更讨厌微软了!!!!!!

更新::

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

任何帮助表示赞赏。谢谢!

谢谢

4

3 回答 3

8

我们的 Intranet 也被锁定,所有 Intranet 站点都使用 Compatibility View,并使用 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>

于 2013-03-12T16:21:39.633 回答
1

您的代码的第 5 行和第 6 行有错误,正如 @JaredFarrish 在评论中所说,导致页面在 IE 上显示为空白。

在第 5 行的末尾,删除空格

<!     [endif]-->

在第 6 行末尾,更改

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

<![endif]-->

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

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

于 2012-12-15T22:15:26.280 回答
0

拉尔夫培根的回答只是为我解决了这个问题。我们使用的 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]-->
于 2015-07-14T07:08:07.790 回答