Ron*_*nny 10 javascript browser css-selectors selectors-api
我最近进入了选择器性能,当我传递document.getElementById
一个简单的时候,当前实现Selectors API的浏览器不会使用它,这让我很烦恼#id
.
性能损失是巨大的,因此库作者继续以自己的方式实现.
有任何想法吗?
Que*_*tin 12
在做出上述评论后,我决定遵循:
来自Chromium源中的Node.cpp
if (strictParsing && inDocument() && querySelectorList.hasOneSelector() && querySelectorList.first()->m_match == CSSSelector::Id) {
Element* element = document()->getElementById(querySelectorList.first()->m_value);
if (element && (isDocumentNode() || element->isDescendantOf(this)) && selectorChecker.checkSelector(querySelectorList.first(), element))
return element;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因此它确实映射到getElementById,只是解析查找选择器的字符串是一项昂贵的操作.