Javascript在IE8 comp模式下工作,但不是标准模式

时间:2009-07-20 07:19:39

标签: javascript jquery internet-explorer internet-explorer-8

我有一个JS脚本,适用于IE8兼容模式,FF,Chrome,Opera,但不适用于IE8标准模式。

我认为标准模式比兼容模式更严格,可能我的代码有问题。我怎么调试?是否有某些东西向我展示了兼容模式但标准的东西?

此外,在短期内,如何更改用户浏览器以在JS中使用兼容模式。我不想改变整个网站(即更改模板doctype),我该如何在JS中做到?

感谢。

4 个答案:

答案 0 :(得分:1)

为了强制兼容模式,您需要一个自定义标头。请参阅此链接http://weblogs.asp.net/joelvarty/archive/2009/03/23/force-ie7-compatibility-mode-in-ie8-with-iis-settings.aspx

如果你发布了无效的Javascript,可能我们可以指出问题。

答案 1 :(得分:1)

首先,检查JavaScript中document.documentMode值的值。如果你的页面处于怪癖模式,它会回到IE 5的行为,这可能会弄乱你的代码。

要检查文档模式,请使用这一小段JavaScript。

var docMode = document.documentMode;
if (!docMode|| docMode < 8) {
    // Old IE or IE8 or later compatibility mode.
    // 5 for quirks mode, 7 for compatibility mode,
    // undefined for IE7 or earlier.
} else {
    // IE8 or later standards mode.
}

如果你不发布代码,很难说出你的问题是什么。如果您向我们展示代码的行为方式不同,我们也许可以弄明白。

答案 2 :(得分:1)

当控件由“name”而不是“id”定义时,兼容模式工作和标准模式不起作用,我通过插入“id”来解决我的问题。

答案 3 :(得分:0)

您遇到的问题可能是与css相关的jquery问题。我注意到只有在ie8标准模式下,我的表没有正确调整大小,并且在调试后注意到我的表的css有重复的条目。 jquery..css(“border-left-width”)在ie8中响应的方式必须有所不同,因为以下css在ie7和ie9标准模式下正确呈现,但不是在ie8标准模式下:

table {
 border: 8px solid #C2DDEE;
 border: none;
}