2010-08-02 3 views
1

Je faisais des expériences avec XPath, en gros j'essaye de charger une page HTML en utilisant XMLHttpRequest et de sélectionner un élément à l'intérieur de son XPath.Javascript/XPath erreur

Voici mon code (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); 
}}); 

Mais il ne fonctionne pas.

C'est l'erreur que je reçois:

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

« il ne fonctionne pas » est pas un message très utile. Quel est le résultat que vous obtenez? Un message d'erreur? Le XMLHttpRequest échoue-t-il? Est-ce que 'onload' n'est jamais appelé? –

+0

Désolé, mon mauvais. Voici l'erreur que j'obtiens: uncaught exception: [Exception ... "Impossible de convertir l'argument JavaScript argument 1 [nsIDOMXPathEvaluator.evaluate]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS image :: fichier: ///C:/Documents%20and%20Settings/Admin/Application%20Data/Mozilla/Firefox/Profiles/mq3w8kw4.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js :: anonymous :: ligne 587 "data: no] –

+3

Lorsque vous ajoutez à un message, s'il vous plaît modifier le poste et ajouter les informations supplémentaires là au lieu d'ajouter un commentaire. J'en ai pris soin pour vous cette fois –

Répondre

1

Vous essayez d'exécuter une requête XPath sur une chaîne, responseText, essayez plutôt responseXML. Pourtant, je suppose que si la page web que vous chargez a XHTML complètement valide, cela échouera aussi. Si vous voulez exécuter des requêtes XPath sur HTML mutilée, essayez de le charger le chargement dans un iframe, puis utilisez iframe.contentDocument.evaluate

+1

yah, responseXML ne fonctionne pas, je suppose que la page n'est pas valide. Je n'aime pas l'idée d'utiliser un iframe. Peut-être que regexp pourrait être une meilleure façon d'extraire la valeur dont j'ai besoin sans utiliser xpath. Merci pour votre réponse. –

0

Jetez un oeil à ces coups sur Google - vous pourriez trouver une réponse là-bas.

+1

J'ai déjà essayé google .. C'est pourquoi je suis là: D .. –

Questions connexes