29

我尝试使用document.querySelectorAll(),但 IE8 抛出错误,即

对象不支持此属性或方法

var titleCheckBox = document.querySelectorAll("");

这里http://www.quirksmode.org/dom/w3c_core.html#t13写的,说IE8支持这个方法。我做错了什么?

4

2 回答 2

50

检查您的页面是否处于 Quirks 模式或 Compatibility 模式。您可以使用 F12 开发工具来确认这一点。按 F12 并查看结果窗口的右上角。如果您在模式描述中看到“兼容性”或“怪癖”,那么您已经找到了问题所在。

  • 怪癖模式:这通常是由缺少或损坏的 Doctype 触发的。如果是这种情况,请确保您的页面以以下内容开头:

    <!DOCTYPE html>
    
  • 兼容模式(IE7 模式):如果您在本地查看页面(即在本地机器上运行它,例如用于测试,或在本地网络上),这可能会被触发。在这种情况下,您遇到了应该禁用的 IE 配置设置。转到“工具”菜单,然后选择“兼容性视图设置”选项。取消勾选兼容性选项,页面应该开始工作。

    兼容模式也可以由X-UA-Compatibility元标记触发(或避免)。如果您在使用兼容模式时遇到问题,这是避免它的好方法:将以下行添加到您的代码中:

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

以上任何一个(或两者)都可能是问题,但我的猜测是问题是兼容模式。compat-mode-on-intranet-sites 设置令人惊讶地鲜为人知,并且吸引了很多人,甚至是一些经验丰富的开发人员。

于 2013-06-04T14:33:22.230 回答
12

IE8 只支持querySelectorAll()标准模式。来自MSDN

Selectors API 被定义为Selectors API规范的一部分,并且仅适用于以 IE8 标准模式显示的网页。

您的页面可能没有正确的 DOCTYPE 声明;您将需要添加一个。

于 2013-06-04T14:28:18.287 回答