【问题标题】:XPath error The document has mutated since the result was returnedXPath 错误 自返回结果后,文档发生了变异
【发布时间】:2018-06-22 10:45:26
【问题描述】:
我正在尝试在页面上使用 xpath,但收到错误 Uncaught DOMException: Failed to execute 'iterateNext' on 'XPathResult': The document has mutated since the result was returned.
xpath = document.evalutate('//a', document)
xpath.iterateNext()
怎么了?
【问题讨论】:
标签:
javascript
html
dom
xpath
【解决方案1】:
问题是页面在生成 XPathResult 对象和访问其中的对象之间发生了变化。
改为使用快照
xpath = document.evaluate('//td/a', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
xpath.snapshotItem(0)
xpath.snapshotItem(1)
【解决方案2】:
如果您的提议是只读的,则可以克隆上下文节点:
xpath = document.evaluate('//a', document.cloneNode(true))
xpath.iterateNext()