Pamiętaj, że Element::innerText
właściwość nie będzie zawierała tekstu ukrytego za pomocą stylu CSS „display:none
” w Google Chrome (a także usunie treść zamaskowaną przez inne techniki CSS (w tym rozmiar czcionki: 0, kolor: przezroczysty i kilka innych podobnych efektów, które powodują, że tekst nie jest renderowany w żaden widoczny sposób).
Inne właściwości CSS są również brane pod uwagę:
- Najpierw parsowany jest styl elementów wewnętrznych „display:” w celu ustalenia, czy ogranicza on zawartość bloku (np. „Display: block”, który jest domyślnym elementem bloków HTML w wbudowanym arkuszu stylów przeglądarki i którego zachowanie nie zostało zastąpione przez twój własny styl CSS); jeśli tak, nowy wiersz zostanie wstawiony do wartości właściwości innerText. Nie stanie się tak z właściwością textContent.
- Rozważone zostaną również właściwości CSS, które generują zawartość wbudowaną: na przykład element wbudowany,
<br \>
który generuje wbudowaną nową linię, również wygeneruje nową linię w wartości tekstu wewnętrznego.
- Styl „display: inline” nie powoduje wprowadzenia nowej linii ani w textContent, ani w textText.
- Styl „display: table” generuje nowe wiersze wokół tabeli i między wierszami tabeli, ale „display: table-cell” wygeneruje znak tabulacji.
- Właściwość „position: bezwzględna” (używana z display: block lub display: inline, to nie ma znaczenia) spowoduje także wstawienie podziału linii.
- Niektóre przeglądarki zawierają również pojedynczą separację spacji między zakresami
Ale Element::textContent
nadal będzie zawierać WSZYSTKIE treści wewnętrznych elementów tekstowych niezależnie od zastosowanego CSS, nawet jeśli są niewidoczne. W textContent nie będą generowane żadne dodatkowe znaki nowej linii ani białe znaki, co po prostu ignoruje wszystkie style i strukturę oraz typy wewnętrzne / blokowe lub pozycjonowane elementów wewnętrznych.
Operacja kopiowania / wklejania za pomocą zaznaczenia myszą spowoduje usunięcie ukrytego tekstu w formacie zwykłego tekstu, który jest umieszczony w schowku, więc nie będzie zawierał wszystkiego w textContent
, ale tylko to, co jest w innerText
środku (po wygenerowaniu białych znaków / nowej linii, jak wyżej) .
Obie właściwości są następnie obsługiwane w Google Chrome, ale ich treść może być inna. Starsze przeglądarki nadal zawierały innetText - wszystko to, co obecnie zawiera textContent (ale ich zachowanie w stosunku do generowania białych znaków / nowych linii było niespójne).
jQuery rozwiąże te niespójności między przeglądarkami za pomocą metody „.text ()” dodanej do przeanalizowanych elementów, które zwraca poprzez zapytanie $ (). Wewnętrznie rozwiązuje to problemy, zaglądając do HTML DOM, pracując tylko z poziomem „węzła”. Zwróci więc coś bardziej przypominającego standardową zawartość tekstową.
Zastrzeżenie polega na tym, że ta metoda jQuery nie wstawi żadnych dodatkowych spacji ani podziałów linii, które mogą być widoczne na ekranie z powodu podelementów (jak <br />
) zawartości.
Jeśli zaprojektujesz niektóre skrypty dla ułatwienia dostępu, a arkusz stylów zostanie przeanalizowany pod kątem renderowania nie-dźwiękowego, na przykład wtyczek używanych do komunikacji z czytnikiem brajlowskim, to narzędzie powinno używać textContent, jeśli musi zawierać określone znaki interpunkcyjne dodane w rozpiętościach z „display: none” i które zazwyczaj są zawarte na stronach (na przykład dla indeksów górnych / dolnych), w przeciwnym razie tekst wewnętrzny będzie bardzo mylący dla czytnika brajlowskiego.
Teksty ukryte przez sztuczki CSS są teraz zwykle ignorowane przez główne wyszukiwarki (które będą również analizować CSS twoich stron HTML, a także będą ignorować teksty, które nie mają kontrastowych kolorów w tle) za pomocą parsera HTML / CSS i właściwości DOM „innerText” dokładnie tak, jak we współczesnych przeglądarkach wizualnych (przynajmniej ta niewidzialna treść nie będzie indeksowana, więc ukryty tekst nie może być użyty jako sztuczka wymuszająca włączenie niektórych słów kluczowych na stronę w celu sprawdzenia jej zawartości); ale ten ukryty tekst będzie nadal wyświetlany na stronie wyników (jeśli strona nadal kwalifikowała się z indeksu do uwzględnienia w wynikach), używając właściwości „textContent” zamiast pełnego HTML do usunięcia dodatkowych stylów i skryptów.
JEŻELI przypiszesz jakiś tekst w dowolnej z tych dwóch właściwości, spowoduje to zastąpienie wewnętrznego znacznika i stylów zastosowanych do niego (tylko przypisany element zachowa swój typ, atrybuty i style), więc obie właściwości będą wówczas zawierać tę samą treść . Jednak niektóre przeglądarki nie będą już honorować zapisu do innerText i pozwolą tylko nadpisać właściwość textContent (nie można wstawiać znaczników HTML podczas pisania do tych właściwości, ponieważ znaki specjalne HTML będą poprawnie kodowane przy użyciu odniesień znaków numerycznych, aby pojawiały się dosłownie , jeśli następnie przeczytasz innerHTML
właściwość po przypisaniu innerText
lub textContent
.