尝试解析AJAX响应时出现“ getElementById不是函数”?

Moo*_*ose 1 javascript greasemonkey xmlhttprequest getelementbyid gm-xmlhttprequest

我正在运行GM_xmlhttpRequest(使用Greasemonkey脚本),并将其存储responseText到新创建的HTML元素中:

var responseHTML = document.createElement('HTML');
...
onload: function() { responseHTML.innerHTML = response.responseText; }
Run Code Online (Sandbox Code Playgroud)


然后我试图在中找到一个元素responseHTML

console.log(responseHTML.getElementsByTagName('div'));
console.log(responseHTML.getElementById('result_0'));
Run Code Online (Sandbox Code Playgroud)


第一个工作正常,但第二个则不行。有任何想法吗?

Bro*_*ams 5

使用DOMParser()转换responseText成可搜索的DOM树。
此外,您尝试搜索/使用从派生的任何内容的尝试都responseText必须在onload函数内部进行。

使用如下代码:

GM_xmlhttpRequest ( {
    ...
    onload:     parseAJAX_ResponseHTML,
    ...
} );

function parseAJAX_ResponseHTML (respObject) {
    var parser      = new DOMParser ();
    var responseDoc = parser.parseFromString (respObject.responseText, "text/html");

    console.log (responseDoc.getElementsByTagName('div'));
    console.log (responseDoc.getElementById('result_0'));
}
Run Code Online (Sandbox Code Playgroud)


当然,还要验证ID result_0为ID的节点是否确实在返回的HTML中。(使用Firebug,Wireshark等)