Question

J'ai une chaîne telle que <html><body><div id="message">Hello World!</div></body></html> et j'aimerais obtenir le contenu de l'élément #message sans analyser le code HTML moi-même.

Je pensais que je pourrais peut-être créer un objet document à partir d'une chaîne dans Gecko (ceci est pour un add-on Firefox), mais je ne vois pas de moyen simple.

J'ai remarqué qu'il existe une méthode createDocument , mais cela ne fonctionne pas. t prendre une ficelle. Il faudrait que je supprime la partie <html> du texte, et là encore je commence à assumer des trucs.

Quelqu'un a des idées? Merci.

EDIT: cela semble fonctionner pour moi:

doc = document.implementation.createDocument( "http://www.w3.org/1999/xhtml", "html", null );
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>';
node = doc.getElementById( "message" ); 
alert( node.innerHTML );
Était-ce utile?

La solution

Où trouvez-vous la chaîne? Si c'est du XML, vous pourriez vous en tirer en utilisant DOMParser.

Sinon, vous devez créer un document HTML - https://developer.mozilla.org/en / Parsing_HTML_From_Chrome .

Le simple fait d'utiliser createDocument semble être suspect, car les gens ont utilisé des solutions plus complexes tout le temps.

Autres conseils

Je n'aime pas répondre à ma propre question, mais cela semble avoir fonctionné pour moi:

doc = document.implementation.createDocument( "http://www.w3.org/1999/xhtml", "html", null );
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>';
node = doc.getElementById( "message" ); 
alert( node.innerHTML );

Est-ce que c'est toujours cette syntaxe? Si oui, pourquoi ne pas utiliser une regex?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top