gpt4 book ai didi

internet-explorer-8 - 令人沮丧的 : Can't force IE 8 into "Compatibility view"!

转载 作者:行者123 更新时间:2023-12-04 08:18:05 24 4
gpt4 key购买 nike

我有两个非常不同的网站。两者在“Internet Explorer 8”浏览器模式下显示的错误不同!

单击地址栏旁边的“兼容性 View ”按钮时,两个站点看起来都很棒。当我后来使用内置的“开发者工具”查看“浏览器模式”和“文档节点”时,我也注意到“浏览器模式”是“IE8 兼容 View ”,“文档模式”是“IE7 标准” ”。正如我所期望的那样。

然后我想强制“Internet Explore 8”进入“浏览器模式”:“IE8 Compat view”,这样我的用户就不必点击地址栏旁边的“兼容性 View ”按钮来获取他们真正需要的东西查看。

我能想到的唯一方法是在标题内的标题下方插入一个元标记,如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>Test</title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<link ... />
<script ...></script>
</head>
<body>
...
</body>
</html>

然后我重新加载网站,地址栏旁边的“兼容性 View ”按钮消失了。正如预期的那样。之后,当我使用内置的“开发人员工具”查看“浏览器模式”和“文档节点”时,突然看到了一些我真的没想到的东西。我希望“浏览器模式”为“IE8 兼容 View ”,“文档节点”为“IE7 标准”,但“浏览器模式”为“IE8”,“文档模式”为“IE7 标准”,与在“Internet Explorer 8”浏览器模式下查看时相比,网站突然出现了一组新错误!

很郁闷,为什么我不能强制使用“IE8 Compat view”浏览器模式而不是“Internet explore 7”或“Internet explore 8”浏览器模式?

最佳答案

quote the IEBlog :

“Browser Mode” affects the user agent string, version vector used when evaluating conditional comments, and the rendering mode.



http://msdn.microsoft.com/en-us/library/dd565624(VS.85).aspx 上有更详细的介绍.

正如您清楚地看到的那样,无论如何您都无法影响所有这些事情:当您告诉浏览器像 IE7 一样工作时,它已经像 IE8 一样工作。

也许真正的问题是: 为什么浏览器模式对您来说如此重要? 文档模式是您最应该关心的 - 浏览器模式更改的所有内容就渲染而言都与排除/包含但版本检查的内容有关,以及 用户无论如何都不会查看开发人员工具 ,所以他们不会在意。

与其在开发人员工具中浪费大量时间让它看起来像纯兼容模式,你应该去确保用户代理字符串检查和条件注释使它能够让 IE7 和 IE8 获得相同的 Material ,然后将 EmulateIE7 留在里面。

编辑:

问题在于您的版本检查,正如我在下面 promise 的那样,我将告诉您问题出在哪里。

如果使用开发者工具调试菜单放置脚本,可以深挖一下,当浏览器报告自身为IE7或IE8时,get_x_position的执行路径不同: is_ie5up对于 IE7 模式设置为 true,对于 IE8 模式设置为 false。这会导致返回非常不同的值。

此时,我们必须回到设置这个变量的地方:
var is_ie5up    = (is_ie6up || (is_ie  && !is_ie3 && !is_ie4));

如您所见,这取决于 is_ie6up 的值,那么让我们来看看周围的代码......
var is_ie8up    = (is_ie8   ||  is_ie9up);
var is_ie7up = (is_ie7 || is_ie8up);
var is_ie7up = (is_ie7);
var is_ie6up = (is_ie6 || is_ie7);
var is_ie5up = (is_ie6up || (is_ie && !is_ie3 && !is_ie4));
var is_ie5_5up = (is_ie6up || (is_ie && !is_ie3 && !is_ie4 && !is_ie5));

...您是否发现了缺陷(提示:比较该片段的第 2 行和第 4 行)?

没错: is_ie6up除非浏览器正好是 IE6 或 IE7,否则不会设置为 true。正确的行当然应该阅读
var is_ie6up    = (is_ie6   || is_ie7up);

...可是等等。这也不好,因为代码片段的第 3 行更改了 is_ie7up仅当浏览器完全是 IE7 时才为真!所以,你需要删除 is_ie7up的覆盖。 , 并修复 is_ie6up 的设置.

我的猜测是您在另一个站点上遇到了完全相同的问题:您以几乎相同的方式搞砸了浏览器检查。

关于internet-explorer-8 - 令人沮丧的 : Can't force IE 8 into "Compatibility view"!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com