IE8 不支持 querySelectorAll

Posted

技术标签:

【中文标题】IE8 不支持 querySelectorAll【英文标题】:IE8 does not support querySelectorAll 【发布时间】:2013-05-30 23:57:49 【问题描述】:

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

对象不支持该属性或方法

var titleCheckBox = document.querySelectorAll("");

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

【问题讨论】:

【参考方案1】:

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

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

<!DOCTYPE html>

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

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

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

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

【讨论】:

关于兼容性视图的要点 - 我相信 IE 在该模式下也会抛出相同的错误,如果它实际上在那里不起作用的话。 谢谢,兼容性问题修复帮助我解决了 IE 中的 Jquery Datepicker 问题 我遇到了&lt;base&gt; 标记位于&lt;html&gt;&lt;head&gt; 标记之间的问题,因此请确保您的HTML 结构有效。 非常感谢!兼容性也帮助了我。【参考方案2】:

IE8 仅在标准模式下支持querySelectorAll()。来自MSDN:

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

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

【讨论】:

另外,它只会使用 css 2 选择器选择 dom 节点。 不,它使用它支持的任何选择器来选择节点。 IE8 支持某些 CSS3 选择器,包括所有属性选择器和 ~ 组合器。

以上是关于IE8 不支持 querySelectorAll的主要内容,如果未能解决你的问题,请参考以下文章

IE8 不支持 extjs4 中的斜体标签

placeholder 不支持ie8

关于IE8及其以下的IE版本不支持getElementsByClassName

IE8 不支持 Google API 字体

IE8浏览器是不支持getElementsByClassName

IE8样式不支持setProperty方法