Observe que a Element::innerText
propriedade não conterá o texto oculto pelo estilo CSS " display:none
" no Google Chrome (também eliminará o conteúdo que foi mascarado por outras técnicas de CSS (incluindo tamanho da fonte: 0, cor: transparente e alguns outros efeitos semelhantes que fazem com que o texto não seja renderizado de maneira visível).
Outras propriedades CSS também são consideradas:
- Primeiro, o estilo "display:" dos elementos internos é analisado para determinar se ele delimita o conteúdo de um bloco (como "display: block", que é o padrão dos elementos de bloco HTML na folha de estilo interna do navegador e cujo comportamento não foi substituído por seu próprio estilo CSS); Nesse caso, uma nova linha será inserida no valor da propriedade innerText. Isso não acontecerá com a propriedade textContent.
- As propriedades CSS que geram conteúdo embutido também serão consideradas: por exemplo, o elemento inline
<br \>
que gera uma nova linha embutida também gerará uma nova linha no valor de innerText.
- O estilo "display: inline" não causa nova linha em textContent ou innerText.
- O estilo "display: table" gera novas linhas ao redor da tabela e entre as linhas da tabela, mas "display: table-cell" gera um caractere de tabulação.
- A propriedade "position: absolute" (usada com display: block ou display: inline, não importa) também fará com que uma quebra de linha seja inserida.
- Alguns navegadores também incluem uma única separação de espaço entre extensões
Mas Element::textContent
ainda conterá TODO o conteúdo dos elementos internos do texto independentemente do CSS aplicado, mesmo que sejam invisíveis. E não serão geradas novas linhas ou espaços em branco extras no textContent, que apenas ignora todos os estilos e a estrutura e os tipos de elementos internos embutidos / bloqueados ou posicionados.
Uma operação de copiar / colar usando a seleção do mouse descartará o texto oculto no formato de texto sem formatação colocado na área de transferência, para que não contenha tudo o textContent
que estiver dentro, mas apenas o que está dentro innerText
(após a geração de espaços em branco / nova linha, como acima) .
Ambas as propriedades são suportadas no Google Chrome, mas seu conteúdo pode ser diferente. Os navegadores mais antigos ainda incluídos no innetText, como tudo o que o conteúdo do conteúdo agora contém (mas o comportamento deles em relação à geração de espaços em branco / novas linhas era inconsistente).
O jQuery resolverá essas inconsistências entre navegadores usando o método ".text ()" adicionado aos elementos analisados que ele retorna por meio de uma consulta $ (). Internamente, ele resolve as dificuldades examinando o HTML DOM, trabalhando apenas com o nível "nó". Portanto, ele retornará algo parecido com o textContent padrão.
A ressalva é que esse método jQuery não inserirá espaços extras ou quebras de linha que possam ser visíveis na tela causadas por subelementos (como <br />
) do conteúdo.
Se você projetar alguns scripts para acessibilidade e sua folha de estilo for analisada para renderização não auditiva, como plug-ins usados para se comunicar com um leitor de Braille, essa ferramenta deverá usar o textContent se precisar incluir os sinais de pontuação específicos adicionados em vãos estilizados com "display: none" e que geralmente são incluídos nas páginas (por exemplo, sobrescritos / subscritos); caso contrário, o innerText será muito confuso para o leitor de Braille.
Os textos ocultos pelos truques de CSS agora são normalmente ignorados pelos principais mecanismos de pesquisa (que também analisam o CSS de suas páginas HTML e também ignoram textos que não estão com cores contrastantes no fundo) usando um analisador de HTML / CSS e a propriedade DOM "innerText" exatamente como nos navegadores visuais modernos (pelo menos esse conteúdo invisível não será indexado, portanto, o texto oculto não pode ser usado como um truque para forçar a inclusão de algumas palavras-chave na página para verificar seu conteúdo); mas esse texto oculto ainda será exibido na página de resultados (se a página ainda estiver qualificada no índice para ser incluída nos resultados), usando a propriedade "textContent" em vez do HTML completo para remover os estilos e scripts extras.
Se você atribuir texto sem formatação em qualquer uma dessas duas propriedades, isso substituirá a marcação interna e os estilos aplicados a ela (apenas o elemento atribuído manterá seu tipo, atributos e estilos), portanto, ambas as propriedades conterão o mesmo conteúdo . No entanto, alguns navegadores agora não respeitam mais a gravação em innerText e permitem sobrescrever a propriedade textContent (você não pode inserir a marcação HTML ao gravar nessas propriedades, pois os caracteres especiais HTML serão codificados corretamente usando referências de caracteres numéricos para aparecer literalmente , se você ler a innerHTML
propriedade após a atribuição de innerText
ou textContent
.