JavaScript中已废弃的document.all的现代标准替代方案是什么
document.all的现代标准替代方案 根据不同的使用场景,可以选择以下原生规范API作为替代:
- 仅需获取所有元素节点(不含文本、注释等非标签节点):
- 通用场景选
document.querySelectorAll('*'):返回静态NodeList集合,遍历过程不受DOM动态更新影响,不会出现索引偏移问题,适配绝大多数全量元素遍历需求。 - 需要和原
document.all一致的动态实时集合(DOM变化时集合自动同步),可使用document.getElementsByTagName('*'),返回的HTMLCollection特性与原document.all基本对齐。
- 通用场景选
- 需要获取所有类型的DOM节点(含元素、文本、注释等),满足全节点遍历需求,推荐使用DOM标准专用遍历API
TreeWalker,示例用法如下:
// 创建全节点遍历实例 const walker = document.createTreeWalker( document, NodeFilter.SHOW_ALL, // 可按需调整要匹配的节点类型,如只拿文本节点可改为NodeFilter.SHOW_TEXT null ) const allNodes = [] let node = walker.nextNode() while (node) { allNodes.push(node) node = walker.nextNode() }
以上API均兼容所有主流现代浏览器以及IE9及以上版本,可完全覆盖原有document.all的所有使用场景。
内容的提问来源于stack exchange,提问作者Nat Riddle
相关产品推荐
相关产品推荐

