Javascript: eu tenho a representação DOM de um nó (elemento ou documento) e estou procurando a representação de string dele. Por exemplo,
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
deve render:
get_string(el) == "<p>Test</p>";
Tenho a forte sensação de que estou perdendo algo trivialmente simples, mas simplesmente não encontro um método que funcione no IE, FF, Safari e Opera. Portanto, outerHTML não é uma opção.
javascript
string
dom
cross-browser
element
Boldewyn
fonte
fonte
Respostas:
Você pode criar um nó pai temporário e obter o conteúdo interno de HTML dele:
EDIT: Por favor, veja a resposta abaixo sobre outerHTML. el.outerHTML deve ser tudo o que você precisa.
fonte
document.documentElement
em um div? Puta merda ...element
antes de adicioná-lo,tmp
porque ao adicioná-lotmp
, ele será removidodocument
.O que você está procurando é 'outerHTML', mas precisamos de um substituto porque não é compatível com navegadores antigos.
Você encontrará meu plugin jQuery aqui: Obter HTML externo do elemento selecionado
fonte
outerHTML
na versão 11, depois que fiz a pergunta. Então essa não era uma opção. Até atualizei minha pergunta com um comentário apropriado, se você olhar de perto.innerHtml
innerHTML
; )outerHTML
atributo. Veja também caniuse.com/#feat=xml-serializerEu não acho que você precisa de nenhum script complicado para isso. Apenas use
fonte
No FF, você pode usar o
XMLSerializer
objeto para serializar XML em uma string. O IE oferece umaxml
propriedade de um nó. Portanto, você pode fazer o seguinte:fonte
.xml
não funciona em nós DOM (como em nós na página atual). Ele só funciona em nós de documentos XML DOM.outerHTML
não funciona em nós de documentos XML DOM. Ele só funciona em nós DOM (como em nós na página atual). Boa consistência aí, eu diria.Use o elemento # outerHTML:
Também pode ser usado para escrever elementos DOM. Da documentação da Mozilla:
https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML
fonte
Use element.outerHTML para obter a representação completa do elemento, incluindo tags externas e atributos.
fonte
Se o seu elemento tem pai
fonte
<li>
em uma lista.Experimentar
fonte
Descobri que, para meus casos de uso, nem sempre quero todo o outerHTML. Muitos nós simplesmente têm muitos filhos para mostrar.
Esta é uma função (minimamente testada no Chrome):
https://gist.github.com/kahunacohen/467f5cc259b5d4a85eb201518dcb15ec
fonte
Perdi muito tempo tentando descobrir o que há de errado ao iterar por meio do DOMElements com o código da resposta aceita. Isso é o que funcionou para mim, caso contrário, cada segundo elemento desaparece do documento:
fonte
document.getElementsByTagName()
, essa coleção mudará no meio dofor
loop, portanto, o salto de cada segundo elemento.se estiver usando o react:
fonte
.outerHTML
não é específico do React; é um padrão DOM. Confira a resposta de @Rich Apodaca.reactdom.findDOMNode()
..., não o.outerHTML
, mas obrigado pela posição.