IE9相当于querySelectorAll

Fib*_*con 5 javascript internet-explorer selectors-api internet-explorer-9

我在FF或Chrome中没有任何问题,但是IE9在这个方法上丢失了一个错误.我以为我可以使用它,因为它已被证明在这里得到支持:

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

但是,实际情况似乎并非如此.话虽这么说,我可以用它代替什么?

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

var maximize_buttons = document.querySelectorAll(".maximize");
Run Code Online (Sandbox Code Playgroud)

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

编辑(再次):我已在两台独立的计算机上验证了此错误.但是,他们分享了一个共同点 - 他们都在VMware上运行Windows 7.这有关系吗?

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

mac*_*000 7

您需要使用IE9的html5 doctype来处理querySelectorAll()javascript方法.doctype看起来像这样,应该作为站点中所有页面的第一行.

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

  • 实际上,这不是全部真相.任何完全限定的DOCTYPE都可以使用,而不仅仅是HTML5文档类型.浏览器必须只能处于标准模式. (9认同)

T.J*_*der 5

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

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

要告诉 IE 您的站点实际上使用 Web 标准并且它不应该阻碍自己,也可以:

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

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

    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    
    Run Code Online (Sandbox Code Playgroud)

当然,你应该有一个DOCTYPE以及,但只是一个DOCTYPE不会与(中)兼容模式问题处理。