【问题标题】:How to evaluate an xmlhttpRequest如何评估 xmlhttpRequest
【发布时间】:2021-12-01 10:06:35
【问题描述】:

我正在尝试使用 firefox 制作一个 tampermonkey 脚本,在该脚本中我使用 xmlhttpRequest 来检索外部信息,但我在控制台中不断收到相同的错误: “未捕获的 DOMException:节点不能在创建它的文档之外的文档中使用”。我不想使用 responseText 来查找我需要的信息,我想把它变成一个我可以应用评估和引用元素的 DOM。但是我这样做的方式似乎不起作用。 有人知道我该如何处理吗?

GM_xmlhttpRequest({
        method: "get",
        url: someurl,
        onload: function(responseDetails) {
            if(responseDetails.readyState == 4 && responseDetails.status == 200){
                    var parser = new DOMParser()
                    var to_DOM = parser.parseFromString(responseDetails.responseText, "text/html")
                    alert(to_DOM.evaluate("//tr[@bgcolor]/b[1]",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null).snapshotItem(0).innerText)
            }
        }
})

【问题讨论】:

  • 为什么引用的是网页的文档而不是刚刚创建的文档?
  • 没错,我一分钟前自己就想出来了,哈哈。现在工作。不过谢谢:)

标签: javascript dom xmlhttprequest tampermonkey


【解决方案1】:

您引用的是浏览器中加载的文档,而不是您创建的文档。

const parser = new DOMParser()
const responseText = "<html><body><p><strong>Hello World</strong><p></body></html>";
const doc = parser.parseFromString(responseText, "text/html");
console.log(document.evaluate("//p/strong", doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).innerText)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 2023-03-23
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    相关资源
    最近更新 更多