¿Cuál es la diferencia entre innerHTML, innerTexty childNodes[].valueen JavaScript?
javascript
dom
usuario2819851
fuente
fuente

innerTextuna implementación no estándar de textContext por MSIE no es trivial.innerTextse ha agregado a los estándares y es compatible con todos los principales navegadores.textContentahora es compatible con IE> = 9 y se puede usar en lugar deinnerTexten la mayoría de los casos (bonificación, es mucho más rápido), pero hay diferencias entre los dos, por lo que en algunos casos no puede intercambiarlos.innerTextes compatible con todos los navegadores. Firefox comenzó a admitirloinnerHTMLes una vulnerabilidad conocida para los ataques XSS. Dicho esto,innerTexttampoco es 100% seguro. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Respuestas:
Sin
innerTextembargo, a diferencia , leinnerHTMLpermite trabajar con texto enriquecido HTML y no codifica y decodifica automáticamente el texto. En otras palabras,innerTextrecupera y establece el contenido de la etiqueta como texto sin formato, mientras queinnerHTMLrecupera y establece el contenido en formato HTML.fuente
Los siguientes ejemplos se refieren al siguiente fragmento de HTML:
El nodo será referenciado por el siguiente JavaScript:
element.innerHTMLEstablece u obtiene la sintaxis HTML que describe los descendientes del elemento.
Esto es parte de la Especificación de análisis y serialización DOM del W3C . Tenga en cuenta que es una propiedad de los
Elementobjetos.node.innerTextEstablece u obtiene el texto entre las etiquetas de inicio y fin del objeto
innerTextfue presentado por Microsoft y no fue compatible por un tiempo con Firefox. En agosto de 2016,innerTextfue adoptado por el WHATWG y se agregó a Firefox en v45.innerTextle ofrece una representación del texto que tiene en cuenta el estilo que intenta coincidir con lo que representa el navegador, esto significa:innerTextaplicatext-transformywhite-spacegobiernainnerTextrecorta el espacio en blanco entre líneas y agrega saltos de línea entre elementosinnerTextno devolverá texto para elementos invisiblesinnerTextregresarátextContentpara elementos que nunca se representan como<style />y `Nodeelementosnode.textContentObtiene o establece el contenido de texto de un nodo y sus descendientes.
Si bien este es un estándar W3C , IE <9 no lo admite.
Nodeelementosnode.valueEste depende del elemento al que te hayas dirigido. Para el ejemplo anterior,
xdevuelve un objeto HTMLDivElement , que no tiene unavaluepropiedad definida.Las etiquetas de entrada (
<input />), por ejemplo, definen unavaluepropiedad , que se refiere al "valor actual en el control".De los documentos :
Script de muestra
Aquí hay un ejemplo que muestra el resultado del HTML presentado anteriormente:
fuente
innerText: quirksmode.org/dom/html y quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45es compatible.innerTextahora es parte del Estándar y debería ser compatible con Firefox desde la versión 45 en adelante; tal vez razón para una actualización de esta gran respuesta @faraz<a<,>a>, etc.InnerTextLa propiedad html-codifica el contenido, pasando<p>a<p>, etc. Si desea insertar etiquetas HTML, debe usarlasInnerHTML.fuente
En palabras simples:
innerTextmostrará el valor tal como está e ignora cualquierHTMLformato que se pueda incluir.innerHTMLmostrará el valor y aplicará cualquierHTMLformato.fuente
Para refinarlo aún más y recuperar el valor Alec, por ejemplo, use otro .childNodes [1]
fuente
En términos de
MutationObservers, la configuracióninnerHTMLgenera unachildListmutación debido a que los navegadores eliminan el nodo y luego agregan un nuevo nodo con el valor deinnerHTML.Si configura
innerText,characterDatase genera una mutación.fuente
La única diferencia entre
innerTextyinnerHTMLes queinnerTextinserta una cadena tal como está en el elemento, mientras lainnerHTMLejecuta como contenido html.fuente
InnerTextsolo devolverá el valor de texto de la página con cada elemento en una nueva línea en texto sin formato, mientrasinnerHTMLque devolverá el contenido HTML de todo dentro de labodyetiqueta ychildNodesdevolverá una lista de nodos, como sugiere su nombre.fuente
La
innerTextpropiedad devuelve el valor de texto real de un elemento html mientras que elinnerHTMLdevuelve elHTML content. Ejemplo a continuación:fuente
para agregar a la lista, innerText mantendrá su transformación de texto, innerHTML no
fuente