javascript – 为什么querySelector(‘#id’)映射到document.getElementById(‘id’)?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么querySelector(‘#id’)映射到document.getElementById(‘id’)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近我进入了选择器的性能,而且当我们传递一个简单的#id时,目前实现Selectors API的浏览器并没有使用document.getElementById.

性能损失为huge,因此图书馆作者继续以自己的方式实施.

有任何想法吗?

解决方法

在上述评论之后,我决定跟随:

从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上映射,只是解析字符串寻找选择器是一个昂贵的操作.

猜你在找的JavaScript相关文章