Estoy tratando de hacer un script de tampermonkey usando firefox en el que uso xmlhttpRequest para recuperar información externa, pero sigo recibiendo el mismo error en la consola: "DOMException no detectada: el nodo no se puede usar en un documento que no sea en el que fue creado". No quiero usar el texto de respuesta para buscar la información que necesito, quiero convertirlo en un DOM en el que pueda aplicar evaluar y hacer referencia a elementos. Pero la forma en que lo estoy haciendo no parece funcionar. ¿Alguien sabe cómo puedo manejar esto?
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) } } })Estás haciendo referencia al documento que está cargado en el navegador, no al documento que creaste.
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)