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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...