JavaScript/XPath 错误

标签 javascript xpath greasemonkey

我正在尝试使用 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/

相关文章:

javascript - 页面重新加载时的 Webpack 警告

javascript - 添加相同的属性:value pair to multiple objects in array

xml - 使用 XPath 进行挑选

javascript - 每次我在 Firefox 中打开特定网站时如何执行 javascript?

javascript - stackoverflow 列表中有趣的元素背景颜色 - 强制更改

javascript - ng-click $event = 未定义

javascript - Kendo 面板栏更改折叠图标

html - 当我们在Google Chrome开发人员工具上使用“删除元素”时,它是否真的从实时全局服务器中删除了该元素?

javascript - 什么是服务器端 javascript 等同于 xquery 的 xpath

javascript - 不能使用通过调用 getResponseHeader 获得的值