Tenga en cuenta que la Element::innerText
propiedad no contendrá el texto que ha estado oculto por el estilo CSS " display:none
" en Google Chrome (y también eliminará el contenido que ha sido enmascarado por otras técnicas de CSS (incluido el tamaño de fuente: 0, color: transparente y algunos otros efectos similares que hacen que el texto no se represente de manera visible).
También se consideran otras propiedades CSS:
- Primero, el estilo "display:" de los elementos internos se analiza para determinar si delimita un contenido de bloque (como "display: block", que es el valor predeterminado de los elementos de bloque HTML en la hoja de estilo integrada del navegador, y cuyo comportamiento no ha sido anulado por tu propio estilo CSS); Si es así, se insertará una nueva línea en el valor de la propiedad innerText. Esto no sucederá con la propiedad textContent.
- También se considerarán las propiedades CSS que generan contenidos en línea: por ejemplo, el elemento en línea
<br \>
que genera una nueva línea en línea también generará una nueva línea en el valor de innerText.
- El estilo "display: inline" no causa nueva línea en textContent o innerText.
- El estilo "display: table" genera nuevas líneas alrededor de la tabla y entre las filas de la tabla, pero "display: table-cell" generará un carácter de tabulación.
- La propiedad "posición: absoluta" (utilizada con display: block o display: inline, no importa) también hará que se inserte un salto de línea.
- Algunos navegadores también incluirán una separación de espacio único entre tramos
Pero Element::textContent
aún contendrá TODOS los contenidos de elementos de texto interno independientemente del CSS aplicado, incluso si son invisibles. Y no se generarán nuevas líneas o espacios en blanco adicionales en textContent, que simplemente ignora todos los estilos y la estructura y los tipos de elementos internos en línea / bloqueados o posicionados.
Una operación de copiar / pegar usando la selección del mouse descartará el texto oculto en el formato de texto sin formato que se coloca en el portapapeles, por lo que no contendrá todo lo que contiene textContent
, sino solo lo que está dentro innerText
(después de la generación de espacios en blanco / nueva línea como se indicó anteriormente) .
Ambas propiedades son compatibles con Google Chrome, pero su contenido puede ser diferente. Los navegadores más antiguos todavía se incluían en innetText, todo lo que ahora contiene textContent (pero su comportamiento en relación con la generación de espacios en blanco / líneas nuevas era inconsistente).
jQuery resolverá estas inconsistencias entre los navegadores utilizando el método ".text ()" agregado a los elementos analizados que devuelve mediante una consulta $ (). Internamente, resuelve las dificultades al mirar el DOM HTML, trabajando solo con el nivel de "nodo". Por lo tanto, devolverá algo que se parece más al contenido de texto estándar.
La advertencia es que este método jQuery no insertará espacios adicionales o saltos de línea que puedan ser visibles en la pantalla causados por subelementos (como <br />
) del contenido.
Si diseña algunos scripts para la accesibilidad y su hoja de estilo se analiza para la representación no auditiva, como los complementos utilizados para comunicarse con un lector Braille, esta herramienta debe usar el contenido de texto si debe incluir los signos de puntuación específicos que se agregan en tramos con estilo "display: none" y que normalmente se incluyen en las páginas (por ejemplo, para superíndices / subíndices), de lo contrario, el texto interno será muy confuso para el lector Braille.
Los textos ocultos por los trucos CSS ahora son generalmente ignorados por los principales motores de búsqueda (que también analizarán el CSS de sus páginas HTML, y también ignorarán los textos que no tienen colores contrastantes en el fondo) usando un analizador HTML / CSS y la propiedad DOM "innerText" exactamente como en los navegadores visuales modernos (al menos este contenido invisible no se indexará, por lo que el texto oculto no se puede usar como un truco para forzar la inclusión de algunas palabras clave en la página para verificar su contenido); pero este texto oculto todavía se mostrará en la página de resultados (si la página aún estaba calificada del índice para ser incluida en los resultados), utilizando la propiedad "textContent" en lugar del HTML completo para eliminar los estilos y scripts adicionales.
SI asigna texto sin formato en cualquiera de estas dos propiedades, esto sobrescribirá el marcado interno y los estilos aplicados (solo el elemento asignado mantendrá su tipo, atributos y estilos), por lo que ambas propiedades contendrán el mismo contenido . Sin embargo, algunos navegadores ya no respetarán la escritura en innerText, y solo le permitirán sobrescribir la propiedad textContent (no puede insertar marcado HTML al escribir en estas propiedades, ya que los caracteres especiales HTML se codificarán correctamente usando referencias de caracteres numéricos para aparecer literalmente , si luego lee la innerHTML
propiedad después de la asignación de innerText
o textContent
.