我需要从页面中某个位置的给定节点开始,以源顺序无限制地遍历HTML文档的节点。我的想法是,我将根据需要从某个起始节点开始向上,向下(同级),向左(parentNode)和向右(childNode)扩展“匹配”,直到某个节点结束“匹配爬行”为止。
NodeIterator
非常适合按源顺序遍历节点(根据需要向上,向下和横向穿过树结构),但是始终从某个“根”节点开始,并且不能超出该根。我使用NodeIterator
的唯一方法是
document.body
初始化它(以使所有文档节点都在作用域内),nextNode
调用来快速转发它,直到它到达我的起始节点为止(这样我就可以从那里开始匹配了),第2步和第3步显然是不可取的。
“标准浏览器js”中是否可以使用其他工具或API?要自己实现它,我只知道nextSibling
之类的东西,仍然需要大量的工作来实现我需要通过递归之类上下移动,这就像重新发明一样车轮。我宁愿避免使用库,因为我需要使此代码库尽可能地受限制。