Pergunta

Eu tenho uma string como <html><body><div id="message">Hello World!</div></body></html> e eu gostaria de obter o conteúdo do elemento #message sem analisar o HTML mim mesmo.

Eu pensei que talvez eu poderia criar um objeto de documento a partir de uma string no Gecko (isto é para um add on), mas eu não vejo nenhuma maneira simples.

Eu notei que há um método createDocument , mas que doesn' t dar uma string. Eu teria que tirar a parte <html> do texto, e em seguida, novamente eu estou começando a assumir coisas.

Alguém tem alguma idéia? Obrigado.

EDIT: Isso parece funcionar para mim:

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 );
Foi útil?

Solução

De onde você tira a corda de? Se é XML, você poderia fugir com o uso DOMParser.

Caso contrário, você tem que criar um documento HTML - https://developer.mozilla.org/en / Parsing_HTML_From_Chrome .

O fato de que apenas usando createDocument funciona parece suspeito, porque as pessoas usadas soluções mais complicadas de todo esse tempo.

Outras dicas

Não gosta de responder a minha própria pergunta, mas isso parece ter funcionado para mim:

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 );

É sempre que a sintaxe? Se assim for, por que não usar um regex?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top