Зауважте, що Element::innerText
властивість не буде містити текст, який "" приховано стилем CSS у " display:none
Google Chrome", а також видалить вміст, замаскований іншими технологіями CSS (включаючи розмір шрифту: 0, колір: прозорий та кілька інших подібних ефектів, які призводять до того, що текст не відображатиметься видимим способом).
Також враховуються інші властивості CSS:
- Спочатку стиль внутрішніх елементів "display:" аналізується, щоб визначити, чи він розмежовує вміст блоку (наприклад, "display: block", що є типовим для елементів блоку HTML у вбудованому стилі таблиці браузера, і поведінку якого не переосмислював власний стиль CSS); якщо так, у значення властивості innerText буде вставлено новий рядок. Це не відбудеться із властивістю textContent.
- Властивості CSS, які генерують вбудований вміст, також будуть враховані: наприклад, елемент
<br \>
вбудованого рядка, який генерує вбудований новий рядок, також буде генерувати новий рядок у значенні innerText.
- Стиль "display: inline" не викликає нового рядка ні в textContent, ні в InternalText.
- Стиль "display: table" генерує нові рядки навколо таблиці та між рядками таблиці, але "display: table-cell" буде генерувати характер таблиць.
- Властивість "позиція: абсолютний" (використовується з дисплеєм: блок або дисплей: вбудований, це не має значення) також призведе до вставки розриву рядка.
- Деякі браузери також включатимуть єдиний пробіл між прольотами
Але Element::textContent
все одно буде містити ВСІ вміст внутрішніх текстових елементів незалежно від застосованих CSS, навіть якщо вони невидимі. І ніяких зайвих нових рядків або пробілів не буде генеровано у textContent, який просто ігнорує всі стилі та структуру, вбудовані / блокові або розміщені типи внутрішніх елементів.
Операція копіювання / вставлення за допомогою вибору миші відкидає прихований текст у форматі звичайного тексту, який розміщено в буфері обміну, тому він не буде містити все в простому тексті textContent
, а лише те, що знаходиться в межах innerText
(після створення пробілів / створення нового рядка, як вище) .
Тоді обидві властивості підтримуються в Google Chrome, але їх вміст може бути різним. Старі браузери все ще включали в innetText все, як те, що зараз містить textContent (але їх поведінка стосовно тодішнього покоління пробілів / нових рядків була непостійною).
jQuery вирішить ці невідповідності між браузерами за допомогою методу ".text ()", доданого до проаналізованих елементів, які він повертає за допомогою $ () запиту. Внутрішньо він вирішує труднощі, вивчивши HTML DOM, працюючи лише з рівнем "вузол". Таким чином, він поверне щось схоже на стандартний textContent.
Застереження полягає в тому, що цей метод jQuery не буде вставляти зайвих пробілів або розривів рядків, які можуть бути видні на екрані, викликані підпунктами (як <br />
) вмісту.
Якщо ви розробляєте деякі сценарії для доступності і ваш таблицю стилів розбирається для неслухового візуалізації, наприклад, плагіни, які використовуються для спілкування з читачем Брайля, цей інструмент повинен використовувати textContent, якщо він повинен містити конкретні знаки пунктуації, додані в проміжки, стилізовані з "display: none" і зазвичай містяться на сторінках (наприклад, для надписів / підписок), інакше InternalText буде дуже заплутаним для Braille Reader.
Тексти, приховані трюками CSS, зараз зазвичай ігноруються основними пошуковими системами (які також будуть аналізувати CSS ваших HTML-сторінок, а також ігнорувати тексти, які не мають контрастних кольорів на тлі), використовуючи HTML / CSS-аналізатор та властивість DOM "innerText" точно так само, як у сучасних візуальних браузерах (принаймні цей невидимий контент не буде індексований, тому прихований текст не може бути використаний як хитрість, щоб змусити включити до сторінки деякі ключові слова для перевірки його вмісту); але цей прихований текст буде стиль відображатися на сторінці результатів (якщо сторінка все ще була кваліфікована з індексу для включення в результати), використовуючи властивість "textContent" замість повного HTML, щоб зняти зайві стилі та сценарії.
Якщо ви призначите якийсь звичайний текст у будь-якому з цих двох властивостей, це замінить внутрішню розмітку та застосовані до нього стилі (лише призначений елемент буде зберігати його тип, атрибути та стилі), тож обидва властивості будуть містити однаковий вміст . Однак деякі веб-переглядачі тепер більше не будуть шанувати запис у innerText, і лише дозволять вам перезаписати властивість textContent (ви не можете вставити розмітку HTML під час запису до цих властивостей, оскільки спеціальні символи HTML будуть правильно кодовані, використовуючи числові посилання символів, щоб відображатися буквально , якщо ви потім прочитали innerHTML
властивість після присвоєння innerText
або textContent
.