Javascript: tengo la representación DOM de un nodo (elemento o documento) y estoy buscando la representación de cadena del mismo. P.ej,
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
debería producir:
get_string(el) == "<p>Test</p>";
Tengo la fuerte sensación de que me falta algo trivialmente simple, pero simplemente no encuentro un método que funcione en IE, FF, Safari y Opera. Por lo tanto, externalHTML no es una opción.
javascript
string
dom
cross-browser
element
Boldewyn
fuente
fuente
Respuestas:
Puede crear un nodo principal temporal y obtener su contenido innerHTML:
EDITAR: Consulte la respuesta a continuación sobre HTML externo. el.outerHTML debería ser todo lo que se necesita.
fuente
document.documentElement
a un div? Santa mierda ....element
antes de agregarlotmp
porque cuando lo agreguetmp
, se eliminará dedocument
.Lo que está buscando es 'externalHTML', pero necesitamos un respaldo porque no es compatible con los navegadores antiguos.
Encontrarás mi complemento jQuery aquí: Obtener el HTML externo del elemento seleccionado
fuente
outerHTML
en la versión 11, después de que hice la pregunta. Entonces esa no era una opción en ese entonces. Incluso actualicé mi pregunta con un comentario apropiado, si miras de cerca.innerHtml
innerHTML
; )outerHTML
atributo. Ver también caniuse.com/#feat=xml-serializerNo creo que necesites ningún guión complicado para esto. Solo usa
fuente
En FF puede utilizar el
XMLSerializer
objeto para serializar XML en una cadena. IE te da unaxml
propiedad de nodo. Entonces puedes hacer lo siguiente:fuente
.xml
, no funciona en los nodos DOM (como en los nodos de la página actual). Solo funciona en nodos de documentos XML DOM.outerHTML
no funciona en los nodos de documentos DOM XML. Solo funciona en nodos DOM (como en los nodos de la página actual). Buena consistencia, diría yo.Utilice el elemento # externalHTML:
También se puede utilizar para escribir elementos DOM. De la documentación de Mozilla:
https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML
fuente
Utilice element.outerHTML para obtener una representación completa del elemento, incluidas las etiquetas y los atributos externos.
fuente
Si tu elemento tiene padre
fuente
<li>
en una lista.Tratar
fuente
Descubrí que para mis casos de uso no siempre quiero el HTML externo completo. Muchos nodos simplemente tienen demasiados hijos para mostrar.
Aquí hay una función (mínimamente probada en Chrome):
https://gist.github.com/kahunacohen/467f5cc259b5d4a85eb201518dcb15ec
fuente
He perdido mucho tiempo averiguando qué está mal cuando itero a través de DOMElements con el código en la respuesta aceptada. Esto es lo que funcionó para mí, de lo contrario, cada segundo elemento desaparece del documento:
fuente
document.getElementsByTagName()
, esa colección cambiará en medio delfor
ciclo, por lo tanto, se saltará cada segundo elemento.si usa reaccionar:
fuente
.outerHTML
no es específico de React; es un estándar DOM. Mira la respuesta de @Rich Apodaca.reactdom.findDOMNode()
..., no el.outerHTML
, pero gracias por la posición