IE9相当于querySelectorAll

时间:2012-11-01 05:04:12

标签: javascript internet-explorer internet-explorer-9 selectors-api

我在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标准解决了这个问题,但如果怪癖是默认的,我仍然需要让它工作。

3 个答案:

答案 0 :(得分:7)

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

<!DOCTYPE html>

答案 1 :(得分:4)

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

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

告诉IE,您的网站实际上使用的是网络标准,它不应该自行蹒跚:

  1. 更新您的服务器配置,以使用值X-UA-Compatible

  2. 发送IE=Edge标头
  3. 将其添加为meta标记顶部的head标记:

    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    
  4. 当然,你应该有一个doctype 以及,但只是一个doctype不会处理(in)兼容模式问题。

答案 2 :(得分:3)

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

您必须,必须(!)在每个HTML网页上都有一个doctype:<!doctype html>
每个相关的(和许多不相关的)浏览器都支持它 没有它......嗯...... quirksmode ......

你不想在quirksmode中运行任何东西,因为你永远不知道什么样的JS / CSS / html5支持突然消失或行为奇怪......

所以不要这样做。