Nota che la Element::innerText
proprietà non conterrà il testo che è stato nascosto dallo stile CSS "display:none
" in Google Chrome (inoltre eliminerà il contenuto che è stato mascherato da altre tecniche CSS (inclusi dimensioni del carattere: 0, colore: trasparente e alcuni altri effetti simili che impediscono il rendering del testo in modo visibile).
Altre proprietà CSS sono anche considerate:
- Innanzitutto viene analizzato lo stile "display:" degli elementi interni per determinare se delimita un contenuto di blocco (come "display: block" che è il valore predefinito degli elementi di blocco HTML nel foglio di stile incorporato del browser e il cui comportamento non è stato sostituito da il tuo stile CSS); in tal caso verrà inserita una nuova riga nel valore della proprietà innerText. Questo non accadrà con la proprietà textContent.
- Saranno prese in considerazione anche le proprietà CSS che generano contenuti inline: ad esempio l'elemento inline
<br \>
che genera una nuova riga incorporata genererà anche una nuova riga nel valore di innerText.
- Lo stile "display: inline" non provoca newline in textContent o innerText.
- Lo stile "display: table" genera nuove righe attorno alla tabella e tra le righe della tabella, ma "display: table-cell" genererà un carattere di tabulazione.
- La proprietà "position: absolute" (usata con display: block o display: inline, non importa) farà anche inserire un'interruzione di riga.
- Alcuni browser includeranno anche una singola separazione dello spazio tra span
Conterrà Element::textContent
comunque TUTTI i contenuti degli elementi di testo interni indipendentemente dal CSS applicato anche se sono invisibili. E nessuna nuova riga o spazio bianco verrà generata in textContent, che ignora semplicemente tutti gli stili e la struttura e i tipi di elementi interni incorporati / in blocco / posizionati.
Un'operazione di copia / incolla utilizzando la selezione del mouse eliminerà il testo nascosto nel formato di testo normale che viene inserito negli appunti, quindi non conterrà tutto textContent
ciò che è dentro, ma solo ciò che è dentro innerText
(dopo la generazione di spazi bianchi / newline come sopra) .
Entrambe le proprietà sono quindi supportate in Google Chrome, ma il loro contenuto potrebbe essere diverso. I browser precedenti includevano ancora in innetText tutto come quello che contiene textContent (ma il loro comportamento in relazione alla generazione di spazi bianchi / newline era incoerente).
jQuery risolverà queste incoerenze tra i browser usando il metodo ".text ()" aggiunto agli elementi analizzati che restituisce tramite una query $ (). Internamente, risolve le difficoltà esaminando il DOM HTML, lavorando solo con il livello "nodo". Quindi restituirà qualcosa che assomiglia di più al textContent standard.
L'avvertenza è che questo metodo jQuery non inserirà spazi aggiuntivi o interruzioni di riga che potrebbero essere visibili sullo schermo a causa di elementi secondari (come <br />
) del contenuto.
Se si progettano alcuni script per l'accessibilità e il foglio di stile viene analizzato per il rendering non auricolare, come i plug-in utilizzati per comunicare con un lettore Braille, questo strumento dovrebbe utilizzare il textContent se deve includere i segni di punteggiatura specifici che vengono aggiunti in span in stile con "display: none" e che sono generalmente inclusi nelle pagine (ad esempio per apice / pedice), altrimenti il testo interno sarà molto confuso sul lettore Braille.
I testi nascosti dai trucchi CSS sono ora in genere ignorati dai principali motori di ricerca (che analizzeranno anche il CSS delle tue pagine HTML e ignoreranno anche i testi che non hanno colori contrastanti sullo sfondo) usando un parser HTML / CSS e la proprietà DOM "innerText" esattamente come nei moderni browser visivi (almeno questo contenuto invisibile non verrà indicizzato, quindi il testo nascosto non può essere usato come un trucco per forzare l'inclusione di alcune parole chiave nella pagina per verificarne il contenuto); ma questo testo nascosto verrà visualizzato nella pagina dei risultati (se la pagina era ancora qualificata dall'indice per essere inclusa nei risultati), usando la proprietà "textContent" anziché l'HTML completo per eliminare gli stili e gli script extra.
Se assegni del testo in chiaro in una di queste due proprietà, questo sovrascriverà il markup interno e gli stili ad esso applicati (solo l'elemento assegnato manterrà il suo tipo, attributi e stili), quindi entrambe le proprietà conterranno lo stesso contenuto . Tuttavia, alcuni browser ora non onoreranno più la scrittura su innerText e ti consentiranno solo di sovrascrivere la proprietà textContent (non è possibile inserire markup HTML quando si scrive su queste proprietà, poiché i caratteri speciali HTML verranno codificati correttamente usando riferimenti numerici per apparire letteralmente , se poi leggi la innerHTML
proprietà dopo l'assegnazione di innerText
o textContent
.