2010-08-02 72 views
1

我正在尝试使用XPath,基本上我试图使用XMLHttpRequest加载一个HTML页面,并从它的XPath中选择一个元素。Javascript/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] 
+1

“它不工作”是不是非常有用的消息。你得到的结果是什么?错误消息? XMLHttpRequest是否失败? 'onload'从不叫? – 2010-08-02 17:32:04

+0

对不起,我的坏。这是我得到的错误: 未捕获的异常:[Exception ...“无法转换JavaScript参数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-ee​​082ba24781%7D/components/greasemonkey.js :: anonymous:line 587“data:no] – 2010-08-02 17:40:49

+3

当添加到帖子时,请修改帖子并在其中添加额外的信息,而不是添加评论。这一次我照顾了你 – 2010-08-02 18:00:13

回答

1

您试图在字符串上运行XPath查询,而不是responseText,请尝试responseXML

尽管如此,我猜测,除非你正在加载的网页有完全有效的XHTML,否则也会失败。如果你想在错位的HTML运行XPath查询,试装的iframe中加载它,然后使用iframe.contentDocument.evaluate

+1

嗯,responseXML不起作用,我猜这个网页是无效的。我不喜欢使用iframe的想法。也许正则表达式可能是一种更好的方式,用xpath提取我需要的w/o值。谢谢你的回答。 – 2010-08-03 05:48:23

0

看看上Google这些点击 - 你可能会找到答案在那里。

+1

我已经试过谷歌..这就是为什么我在这里:D .. – 2010-08-03 05:48:54