5

我在 FF 或 Chrome 中没有遇到任何问题,但是 IE9 在这种方法上会出错。我认为我可以使用它,因为它已被证明在这里得到支持:

http://www.quirksmode.org/dom/w3c_core.html

然而,在实践中似乎并非如此。话虽如此,我可以用什么代替它?

编辑:这是它失败的确切行:

var maximize_buttons = document.querySelectorAll(".maximize");

那是我第一次尝试使用 querySelectorAll()。浏览器版本号为 9.0.8112.16421

编辑(再次):我已经在两台不同的计算机上验证了这个错误。然而,他们有一个共同点——他们都在 VMware 上运行 Windows 7。这有关系吗?

浏览器模式是 IE9,但文档模式默认设置为 quirks。将其更改为 Internet Explorer 9 标准解决了该问题,但如果怪癖是默认设置,我仍然需要让它工作。

4

3 回答 3

6

您需要使用 IE9 的 html5 文档类型才能使用 querySelectorAll() javascript 方法。doctype 看起来像这样,应该放在网站所有页面的第一行。

<!DOCTYPE html>
于 2012-11-14T22:49:33.940 回答
5

正如其他答案所暗示的,这与怪癖与标准模式无关。

它与所谓的“兼容模式”有关。IE9 到 IE11 默认对内网站点使用“兼容模式”,其他站点根据您的设置使用。

要告诉 IE 您的网站实际上使用了 Web 标准,并且它不应该自己蹒跚而行,要么:

  1. 更新您的服务器配置以发送X-UA-Compatible带有值的标头IE=Edge,或者

  2. 将其作为标签添加到元素标记meta的顶部:head

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

当然,您也应该有一个 doctype 但只是一个 doctype 不会处理(in)Compatibility Mode 问题。

于 2015-12-11T12:37:21.357 回答
3

运行 quirksmode 就像运行非标准的 IE6。

您必须,必须,必须(!)在每个 HTML 页面顶部都有一个 doctype:<!doctype html>
每个相关(和许多不相关)浏览器都支持它。
没有它... ...好吧... quirksmode ...

您永远都不想在 quirksmode 中运行任何东西,因为您永远不知道哪种 JS/CSS/html5 支持会突然消失或行为怪异……

所以不要这样做。

于 2012-11-14T23:33:54.363 回答