我正在尝试使用 XPath,基本上我正在尝试使用 XMLHttpRequest 加载 HTML 页面并从其 XPath 中选择其中的一个元素。
这是我的代码(Greasemonkey/Js):
GM_xmlhttpRequest({
method: 'GET',
url: url,
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'application/atom+xml,application/xml,text/xml',
},
onload: function(responseDetails)
{
var rs = document.evaluate("/html/body/div",responseDetails.responseText,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var n = rs.snapshotItem(0);
alert(n.innerHTML);
}});
但是它不起作用。
这是我收到的错误:
uncaught exception: [Exception... "Could not convert JavaScript argument arg 1
[nsIDOMXPathEvaluator.evaluate]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)"
location: "JS frame :: file:///C:/Documents%20and%20Settings/Admin/Application%20Data
/Mozilla/Firefox/Profiles/mq3w8kw4.default/extensions/%7Be4a8a97b-f2ed-450b-
b12d-ee082ba24781%7D/components/greasemonkey.js :: anonymous :: line 587" data: no]
最佳答案
您正在尝试对字符串 responseText
运行 XPath 查询,请尝试使用 responseXML
。
不过,我猜测除非您正在加载的网页具有完全有效的 XHTML,否则这也会失败。如果您想在损坏的 HTML 上运行 XPath 查询,请尝试在 iframe 中加载它,然后使用 iframe.contentDocument.evaluate
关于JavaScript/XPath 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3390212/