【问题标题】: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()
    

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多