我认为我的问题在标题中很清楚
还有另一种模拟或替代的方法,可以在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.
}
如果可能,我想要本土创意,我会做所有事情。
答案 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。