Qual é a diferença entre innerHTML
, innerText
e childNodes[].value
em JavaScript?
javascript
dom
user2819851
fonte
fonte
innerText
uma implementação não padrão do textContext by MSIE não é trivial.innerText
foi adicionado aos padrões e suportado por todos os principais navegadores.textContent
agora é suportado pelo IE> = 9 e pode ser usado em vez deinnerText
na maioria dos casos (bônus, é muito mais rápido), mas existem diferenças entre os dois, portanto, em alguns casos, você não pode trocá-los.innerText
é bem suportado em todos os navegadores. Firefox começou a apoiá-lo a partir da versão 45. caniuse.com/#search=innertextinnerHTML
é uma vulnerabilidade conhecida para ataques XSS. Dito isto,innerText
também não é 100% seguro. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Respostas:
Ao contrário
innerText
,innerHTML
permite trabalhar com rich text HTML e não codifica e decodifica automaticamente o texto. Em outras palavras,innerText
recupera e define o conteúdo da tag como texto sem formatação, enquantoinnerHTML
recupera e define o conteúdo no formato HTML.fonte
Os exemplos abaixo se referem ao seguinte snippet HTML:
O nó será referenciado pelo seguinte JavaScript:
element.innerHTML
Define ou obtém a sintaxe HTML que descreve os descendentes do elemento
Isso faz parte da especificação de análise e serialização de DOM do W3C . Observe que é uma propriedade dos
Element
objetos.node.innerText
Define ou obtém o texto entre as tags de início e fim do objeto
innerText
foi introduzido pela Microsoft e por um tempo não foi suportado pelo Firefox. Em agosto de 2016,innerText
foi adotado pelo WHATWG e adicionado ao Firefox na v45.innerText
fornece uma representação sensível ao estilo do texto que tenta corresponder ao que é renderizado pelo navegador, o que significa:innerText
aplicatext-transform
ewhite-space
regrasinnerText
apara o espaço em branco entre as linhas e adiciona quebras de linha entre os itensinnerText
não retornará texto para itens invisíveisinnerText
retornarátextContent
para elementos que nunca são renderizados como<style />
e `Node
elementosnode.textContent
Obtém ou define o conteúdo do texto de um nó e seus descendentes.
Embora este seja um padrão W3C , ele não é suportado pelo IE <9.
Node
elementosnode.value
Este depende do elemento que você segmentou. Para o exemplo acima,
x
retorna um objeto HTMLDivElement , que não possui umavalue
propriedade definida.Tags de entrada (
<input />
), por exemplo, definem umavalue
propriedade , que se refere ao "valor atual no controle".Dos documentos :
Script de exemplo
Aqui está um exemplo que mostra a saída para o HTML apresentado acima:
fonte
innerText
: quirksmode.org/dom/html e quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45
é suportado.innerText
agora faz parte do padrão e deve ser suportado pelo Firefox a partir da versão 45; talvez a razão para uma atualização para esta grande resposta @faraz<
em<
,>
para>
etc.InnerText
A propriedade html codifica o conteúdo, passa<p>
para<p>
etc. Se você deseja inserir tags HTML, precisa usarInnerHTML
.fonte
Em palavras simples:
innerText
mostrará o valor como está e ignora qualquerHTML
formatação que possa ser incluída.innerHTML
mostrará o valor e aplicará qualquerHTML
formatação.fonte
Para refinar ainda mais e recuperar o valor Alec, por exemplo, use outro .childNodes [1]
fonte
Em termos de
MutationObservers
, a configuraçãoinnerHTML
gera umachildList
mutação devido aos navegadores removendo o nó e adicionando um novo nó com o valor deinnerHTML
.Se você definir
innerText
, umacharacterData
mutação será gerada.fonte
A única diferença entre
innerText
einnerHTML
é queinnerText
insira a string como está no elemento, enquanto ainnerHTML
executa como conteúdo html.fonte
InnerText
retornará apenas o valor de texto da página com cada elemento em uma nova linha em texto sem formatação, enquantoinnerHTML
retornará o conteúdo HTML de tudo dentro dabody
tag echildNodes
retornará uma lista de nós, como o nome sugere.fonte
A
innerText
propriedade retorna o valor real do texto de um elemento html enquantoinnerHTML
retorna oHTML content
. Exemplo abaixo:fonte
para adicionar à lista, innerText manterá sua transformação de texto, innerHTML não
fonte