【发布时间】:2011-06-08 14:14:05
【问题描述】:
我一直在寻找 Sizzle 以外的 CSS 选择器功能,我遇到了 this function。
function SparkEn(xpath,root) {
xpath = xpath
.replace(/((^|\|)\s*)([^/|\s]+)/g,'$2.//$3')
.replace(/\.([\w-]+)(?!([^\]]*]))/g, '[@class="$1" or @class$=" $1" or @class^="$1 " or @class~=" $1 "]')
.replace(/#([\w-]+)/g, '[@id="$1"]')
.replace(/\/\[/g,'/*[');
str = '(@\\w+|"[^"]*"|\'[^\']*\')';
xpath = xpath
.replace(new RegExp(str+'\\s*~=\\s*'+str,'g'), 'contains($1,$2)')
.replace(new RegExp(str+'\\s*\\^=\\s*'+str,'g'), 'starts-with($1,$2)')
.replace(new RegExp(str+'\\s*\\$=\\s*'+str,'g'), 'substring($1,string-length($1)-string-length($2)+1)=$2');
var got = document.evaluate(xpath, root||document, null, 5, null);
var result=[];
while (next = got.iterateNext())
result.push(next);
return result;
}
我只是觉得它好得令人难以置信,这是一个仅限 firefox 的功能(xpath?)还是很慢?基本上我为什么要使用 Sizzle?
【问题讨论】:
-
我认为它只是Firefox,多么令人失望。显然 IE 可以在 XML 文档上做到这一点。
-
天哪,我终于发现有人和我有同样的想法:))))))))))))stackoverflow.com/questions/15310502/…
标签: javascript internet-explorer dom cross-browser document.evaluate