文档.评估won't工作从内容脚本

document.evaluate won't work from content script

本文关键字:工作 脚本 评估 won 文档      更新时间:2023-09-26
var allTags = document.evaluate("//*[contains(@src,'"+imgSrc+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

这是给出错误的代码,它给出:

Uncaught Error: TYPE_ERR: DOM XPath Exception 52
谁能告诉我是什么问题?

我没有确切的答案,但我可以猜测并给出一个变通方法。

首先解决:将UNORDERED_NODE_SNAPSHOT_TYPE更改为不创建快照的类型(除非您需要这样做),并返回多个节点,如UNORDERED_NODE_ITERATOR_TYPE(或ANY_TYPE)。

和我的猜测:在阅读规范之后,它说这个函数'TYPE_ERR:如果结果不能被转换为返回指定的类型就会引发'。它可能无法分配资源来创建快照或类似的东西(变通方法假设)。

编辑:

真正的问题很可能不是对document.evaluate的调用,在你的代码中,你做allTags.iterateNext,这个调用期望allTags是*_NODE_ITERATOR_TYPE而不是*_NODE_SNAPSHOT_TYPE,使用allTags.snapshotItem不会导致抛出错误。我在jsfiddle上写了一个示例,它在2秒后使用调用来评估您的问题并以适当的方式迭代元素。