querySelectorIE的所有替代方法

问题描述 投票:5回答:3

我正在运行一些使用此功能的JavaScript:

controls = document.querySelectorAll("input,textarea,button");

它应该在IE 9(开发人员和客户端使用的版本)上工作。但是在我们的项目中,我们使用了一些非常老的Web组件,它们仅在兼容模式下才能正常工作。根据我的研究发现,querySelectorAll仅适用于标准模式。

还有其他选择吗?

编辑:在Chrome和FF上正常工作

javascript internet-explorer-9
3个回答
11
投票

querySelectorAll在IE9中工作正常。它甚至可以在IE8中使用。

但是听起来您的问题是使它特别在怪癖模式或兼容模式下工作。

如果是问题,那么...问题是模式,而不是功能。您需要将站点设置为标准模式,然后querySelectorAll将起作用。

兼容性模式的全部要点是使浏览器模拟IE的旧版本。这样做的主要方法是禁用自该版本以来添加的所有功能。

因此,您基本上说的是:“我已经关闭了浏览器的一半功能,如何使这些功能之一再次起作用?”

显而易见的答案是:重新打开功能。

执行此操作的方法是确保浏览器处于标准模式。

您需要做两件事:

  1. 请确保您具有有效的文档类型,因此可以避免使用Quirks模式。如果您没有,请在代码的最顶部(<!DOCTYPE html>标记上方)添加<html>

  2. <head>元素中的某处添加IE标准模式元标记:

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

    这将迫使IE使用其可用的最佳模式-因此IE9将处于IE9标准模式,等等。]

  3. 您应确保以上两项均在您网站的所有页面中。

[编辑]

您提到您所依赖的是仅在兼容模式下有效的旧组件。

基本答案是,您将无法在兼容模式下的同一站点中使用querySelectorAll。而且还有许多其他现代浏览器功能,您也会错过。

[如果可能,您应该尝试升级该组件,或者将其修复为在现代标准模式下工作。

如果您really

无法退出兼容模式,则说明您很受困。

在这种情况下,您唯一真正的选择是切换到使用内置了自己的选择器引擎的jQuery之类的库。

如果您已经在不使用jQuery的情况下编写了网站,则必须重写所有内容以使用它,这是一个很丑陋的想法,但这可能是您唯一的选择。


2
投票

嗯,经过一番搜索,我最终使用了这个:


0
投票

根据MDN

© www.soinside.com 2019 - 2024. All rights reserved.