Обратите внимание, что свойство Element::innerText
будет , а не содержать текст, который был скрыт стилем CSS "display:none
" в Google Chrome (а также удалит содержимое, замаскированное другими Техника CSS (включая font-size: 0, color: прозрачный и некоторые другие подобные эффекты, которые делают текст не визуализируемым каким-либо видимым способом).
Также учитываются другие свойства CSS:
- Сначала анализируется стиль «display:» внутренних элементов, чтобы определить, разделяет ли он содержимое блока (например, «display: block», который является значением по умолчанию для элементов блока HTML во встроенной таблице стилей браузера, и чье поведение не был переопределен вашим собственным стилем CSS); в этом случае новая строка будет вставлена в значение свойства innerText. Это не произойдет со свойством textContent.
- Также будут учитываться свойства CSS, которые генерируют встроенное содержимое: например, встроенный элемент
<br \>
, который генерирует встроенную новую строку, также будет генерировать новую строку в значении innerText.
- Стиль "display: inline" не вызывает новой строки ни в textContent, ни в innerText.
- Стиль "display: table" генерирует новые строки вокруг таблицы и между строками таблицы, но "display: table-cell" генерирует символ табуляции.
- Свойство position: absolute (используется с display: block или display: inline, это не имеет значения) также приведет к вставке разрыва строки.
- В некоторых браузерах также имеется разделение пробелами на один пробел
Но Element::textContent
будет по-прежнему содержать ВСЕ содержимое внутренних текстовых элементов независимо от применяемого CSS, даже если они невидимы. И никакие дополнительные символы новой строки или пробелы не будут сгенерированы в textContent, который просто игнорирует все стили, а также структуру и встроенные / блочные или позиционированные типы внутренних элементов.
Операция копирования / вставки с использованием выделения мышью отбрасывает скрытый текст в формате обычного текста, который помещается в буфер обмена, поэтому он не будет содержать всего в textContent
, но только то, что находится в innerText
(после генерации пробелов / новой строки, как указано выше).
Тогда оба свойства поддерживаются в Google Chrome, но их содержание может отличаться. Старые браузеры по-прежнему включали в innetText все, что и сейчас содержит textContent (но их поведение в связи с генерацией пробелов / новых строк было нестабильным).
jQuery разрешит эти несоответствия между браузерами, используя метод ".text ()", добавленный к проанализированным элементам, которые он возвращает с помощью запроса $ (). Внутренне это решает трудности, просматривая HTML DOM, работая только с уровнем «узла». Так что он вернет что-то, похожее на стандартный textContent.
Предостережение заключается в том, что этот метод jQuery не будет вставлять лишние пробелы или разрывы строк, которые могут быть видны на экране из-за подэлементов (например, <br />
) содержимого.
Если вы разрабатываете некоторые сценарии для обеспечения доступности, и ваша таблица стилей анализируется для неауристического рендеринга, например, плагинов, используемых для связи со средством чтения Брайля, этот инструмент должен использовать textContent, если он должен включать определенные знаки препинания, добавленные в интервалы, стилизованные под «display: none» и обычно включаемые в страницы (например, для надстрочных / подписных индексов), в противном случае innerText будет очень запутанным для читателя Брайля.
Тексты, скрытые с помощью хитростей CSS, теперь обычно игнорируются основными поисковыми системами (которые также будут анализировать CSS ваших HTML-страниц, а также будут игнорировать тексты, не имеющие контрастных цветов на фоне), используя анализатор HTML / CSS и свойство DOM "innerText" точно так же, как в современных визуальных браузерах (по крайней мере, это невидимое содержимое не будет проиндексировано, поэтому скрытый текст не может быть использован в качестве трюка для принудительного включения некоторых ключевых слов в страницу для проверки ее содержимого); но этот скрытый текст будет по-прежнему отображаться на странице результатов (если страница все еще была квалифицирована из индекса, который будет включен в результаты), используя свойство textContent вместо полного HTML для удаления дополнительных стилей и сценариев.
Если вы назначите какой-либо простой текст в любом из этих двух свойств, это перезапишет внутреннюю разметку и примененные к ней стили (только назначенный элемент сохранит свой тип, атрибуты и стили), поэтому оба свойства будут содержать тот же контент. Однако некоторые браузеры теперь больше не поддерживают запись в innerText и позволяют перезаписывать только свойство textContent (вы не можете вставлять разметку HTML при записи в эти свойства, поскольку специальные символы HTML будут правильно кодироваться с использованием числовых ссылок на символы, которые будут отображаться буквально. , если вы затем прочитали свойство innerHTML
после присвоения innerText
или textContent
.