在诸如ie6,7等旧浏览器中“document.querySelectorAll”的替代方法是什么?

时间:2014-02-11 15:17:24

标签: javascript object

我认为我的问题在标题中很清楚 还有另一种模拟替代的方法,可以在document.querySelectorAll等旧浏览器上使用internet explorer 6, 7

this.elements = [];
var selector, i;
if (document.querySelectorAll) {
    selector = document.querySelectorAll(parameters);
    for (i = 0; i < selector.length; i++) {
        this.elements[i] = selector[i];
    }
} else {
    // Here is the alternative for older browsers.
}

如果可能,我想要本土创意,我会做所有事情。

3 个答案:

答案 0 :(得分:1)

我遇到了以下用于填充document.querySelectorAll的方法:

  • 手动遍历

    通常,将选择器拆分为多个部分,然后对各个部分运行更多基本调用的组合。通常从document.getElementsByTagName('*');之类的东西开始,然后逐步解决。

    某些来源甚至对非WC3兼容DOM模型使用后备,例如Netscape的document.layers API或IE的document.all API,直到IE4-5都得到了支持。搜索DHTML将为您提供有关这些较旧技术的更多信息。

  • CSS行为

    这是一种有趣的方法,因为它通常非常紧凑,但是我听说它也不是很有效。

    简而言之,CSS行为是将JS表达式连接到标准CSS,因此您可以创建动态CSS规则,如下所示:

    selector + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';,以便将当前元素(选择符)推入新创建的document._qsa数组中,然后在从文档中删除CSS样式之前使用该数组。 您可能需要触发滚动事件,以强制浏览器使用新创建的规则,即使滚动距离为0px。

  • Web组件,HTC和XUL

    不,不是那个花哨的HTML5 Polymer东西。原始文件(tm)。 Web组件绝不是什么新鲜事物。通常在笼统术语DHTML下提到。

    很明显,Netscape和IE在如何最好地实现模块化组件的功能方面有不同的看法。 Netscape以及直到最近的Mozilla都支持XUL,它基本上是XML声明,可以执行各种有趣的事情,创建自定义元素,运行JS等。

    IE几乎使用了HTC文件。那里有示例代码,将这两个API桥接在一起,使您可以在Mozilla中运行HTC文件或在IE中运行XUL文件。院长爱德华兹(Dean Edwards)主页是有关该主题的必不可少的信息。

答案 1 :(得分:0)

如果你想要一个如此强大的方法,你最好的机会是使用Sizzle(jQuery使用的选择器引擎)。

答案 2 :(得分:0)

您可以为此使用polyfill