Criando um documento a partir de uma string em Gecko
-
06-07-2019 - |
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 );
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?