2010-08-02 26 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