最近我进入了选择器的性能,而且当我们传递一个简单的#id时,目前实现Selectors API的浏览器并没有使用document.getElementById.
有任何想法吗?
@R_403_323@
在上述评论之后,我决定跟随:
从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; }
所以它在getElementById上映射,只是解析字符串寻找选择器是一个昂贵的操作.