【问题标题】:Determining IE8's Document Mode diagram is wrong, or am I missing something?确定 IE8 的文档模式图是错误的,还是我遗漏了什么?
【发布时间】:2011-09-23 12:40:30
【问题描述】:

我对 IE8 如何确定文档模式有点迷茫。我有矛盾。

设置

这是我网站上生成的网页标题的样子,请注意文档类型:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head">
    <meta id="IE8" http-equiv="X-UA-Compatible" content="IE=8" />
    ...

我正在使用 meta http-equiv 设置为 X-UA-Compatible 来强制它以“标准模式”呈现,因为这个网站已经制作完成所以。该网站位于公司 LAN (10.1.x.x) 中的另一台机器上。

到目前为止一切正常,但我在兼容性设置窗口中遇到了问题:

结果:

当兼容性设置中没有检查并列出任何内容时,用户代理是:

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;.NET4.0C; .NET4.0E) [好的]

仅选中“在兼容性视图中显示所有网站”时:

Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;.NET4.0C; .NET4.0E) [连贯但未预期]

仅选中“在兼容性视图中显示 Intranet 站点”时:

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;.NET4.0C; .NET4.0E) [不行]

当 URL 被添加到“您已添加到兼容性视图中的网站”列表中时:

Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;.NET4.0C; .NET4.0E) [连贯但未预期]

根据下面的IE blog entry 图,如果元标记 X-UA-Compatible 为 present 且值为 IE=8,则渲染器设置为“ 标准模式”。 如前所述,情况并非如此。 Meta 始终是 IE=8,但用户代理发生了变化。 该图负责 X-UA-Compatible 元检查后的兼容性视图设置。就我而言,情况正好相反。 图错了吗?

问题:

  • 为什么选中“在兼容性视图中显示 Intranet 站点”时用户代理是 msie 8.0?! (是不是因为我的meta?http://10.1.x.x/真的算是内网网站吗?)

  • 为什么选中“在兼容性视图中显示所有网站”时用户代理是 msie 7.0? (这会覆盖我的元数据?但不是根据图表)

  • 为什么将站点添加到兼容性列表时,用户代理是 msie 7.0?

根据图表,我的文档类型属于“几乎标准模式”类别。 似乎有更好的元来强制 IE8 标准模式,但根据文档类型:

<meta id="IE8" http-equiv="X-UA-Compatible" content="**IE=EmulateIE8**" />

是使用它更好,还是我目前正在使用的那个更好(强制 IE=8)? 似乎几乎标准模式正是标准模式,在表格中呈现图像时有细微的变化,好的,但是......我应该选择哪一个?

然后图表再次提到“IE=Emulate8”,但this article 谈到“IE=EmulateIE8”,似乎后者是正确的版本according to the documentation of http-equiv

有没有办法检测(客户端/网络)IE 是处于“几乎标准模式”还是“标准模式”?

几个值得一提的链接:

http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

http://blogs.msdn.com/b/ie/archive/2009/02/16/just-the-facts-recap-of-compatibility-view.aspx

http://msdn.microsoft.com/en-us/library/ms533876(VS.85).aspx

http://msdn.microsoft.com/fr-fr/library/cc288325(VS.85).aspx

http://blog.strictly-software.com/2009/03/detecting-ie-8-compatibility-modes-with.html

http://phrogz.net/ie8-intranet-compatibility-view

http://hsivonen.iki.fi/doctype/ -> http://hsivonen.iki.fi/doctype/ie8-mode.png

javascript:alert(navigator.userAgent) javascript:alert(document.compatMode); javascript:alert(document.documentMode);

【问题讨论】:

    标签: internet-explorer-8 user-agent ie8-compatibility-mode


    【解决方案1】:

    IE 开发工具指示正在使用哪个渲染引擎。

    不要依赖用户代理字符串来确定渲染引擎。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      相关资源
      最近更新 更多