我在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,但默认情况下文档模式设置为怪癖。将其更改为Internet Explorer 9标准解决了这个问题,但如果怪癖是默认的,我仍然需要让它工作。
答案 0 :(得分:7)
您需要使用IE9的html5 doctype来处理querySelectorAll()javascript方法。 doctype看起来像这样,应该作为站点中所有页面的第一行。
<!DOCTYPE html>
答案 1 :(得分:4)
这与quirks vs.标准模式无关,正如其他答案所暗示的那样。
它与所谓的“兼容模式”有关。 IE9到IE11默认情况下使用“兼容模式”和内部网站点,并根据您的设置使用其他站点。
告诉IE,您的网站实际上使用的是网络标准,它不应该自行蹒跚:
更新您的服务器配置,以使用值X-UA-Compatible
或
IE=Edge
标头
将其添加为meta
标记顶部的head
标记:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
当然,你应该有一个doctype 以及,但只是一个doctype不会处理(in)兼容模式问题。
答案 2 :(得分:3)
运行quirksmode就像运行非标准的IE6。
您必须,必须(!)在每个HTML网页上都有一个doctype:<!doctype html>
每个相关的(和许多不相关的)浏览器都支持它
没有它......嗯...... quirksmode ......
你不想在quirksmode中运行任何东西,因为你永远不知道什么样的JS / CSS / html5支持突然消失或行为奇怪......
所以不要这样做。