gpt4 book ai didi

javascript - 使用 GM_xmlhttpRequest 获取 xml

转载 作者:数据小太阳 更新时间:2023-10-29 02:37:53 27 4
gpt4 key购买 nike

我正在尝试使用 greasemonkey 检索页面,然后从中提取链接,将链接插入当前页面。我遇到了一些麻烦:

GM_xmlhttpRequest({
method: "GET",
url: "http://www.test.net/search.php?file=test",

onload: function(data)
{
if (!data.responseXML)
{
data.responseXML = new DOMParser().parseFromString(data.responseText, "text/xml");
}
alert("!");
var xmldata = data.response.xml;
var tests = xmldata.getElementsByTagName('test');
alert(tests[0].innerHTML);
}

});

该页面有效,并且 GM_xmlhttpRequest 在我之前尝试时将其作为字符串正确返回,但我似乎无法弄清楚如何制作它以便我可以在其上使用节点操作。提前致谢。

编辑 - 第二个相关问题

我应该如何引用当前页面,以便我可以将它传递给函数,就像传递我获取的页面一样?例如

function FindTests(currentpage)
{
currentpage.getElementById('blah');
}

最初我将文档传递给它,但后来我使用获取的页面。抱歉,如果措辞令人困惑。

最佳答案

如果请求的页面是格式正确的 xml,那么您的方法是正确的。
但您应该将 data.response.xml 更改为 data.responseXML

而且我认为您不能使用 XMLDocument(xml 解析器的结果)执行此操作,因为 .getElementByIdHTMLDocument 中工作。
但是,您可以执行以下操作以获得有效的 HTMLDocument:

if (/^Content-Type: text\/xml/m.test(data.responseHeaders)) {
data.responseXML = new DOMParser().parseFromString(data.responseText, "text/xml");
}
else if (/^Content-Type: text\/html/m.test(data.responseHeaders)) {
var dt = document.implementation.createDocumentType("html", "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd");
var doc = document.implementation.createDocument(null, null, dt);

// I have to find a workaround because this technique makes the html*/head/body tags to disappear.
var html = document.createElement('html');
html.innerHTML = data.responseText;
doc.appendChild(html);

data.responseXML = doc;
}

来源:http://userscripts.org/scripts/review/56489

关于javascript - 使用 GM_xmlhttpRequest 获取 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com