вставить непрерывный пробел по element.innerText

В веб-приложении я динамически создаю большую и довольно сложную таблицу примерно с 10 000 пустых ячеек на первом этапе (некоторые ячейки таблицы останутся пустыми, некоторые - нет). Мой первый appoach использовал innerHtml с непрерывным пространством, чтобы предотвратить сворачивание пустых ячеек:

td.innerHtml = ' ';

Но это было довольно медленно. Затем я обнаружил, что установить innerText намного быстрее, чем установить innerHtml. Поэтому я изменил свой код на

td.innerText = '\u00a0';

потому что td.innerText = ' ' просто написал текст " " в каждой ячейке. В Internet Explorer 11 вроде работало, но в Firefox границы пустых ячеек исчезли. Но я не вижу никакой разницы, если проверяю ячейки (через Firebug или что-то еще) и сравниваю их с моей предыдущей версией.


person Sebastian    schedule 30.10.2014    source источник
comment
Firefox не поддерживает innerText в пользу textContent   -  person ndugger    schedule 30.10.2014
comment
innerText - это проприетарные расширения Microsoft, iirc.   -  person little pootis    schedule 30.10.2014
comment
Я не уверен, что понимаю, что означает сворачивание, и почему эту проблему нельзя решить намного более эффективно с помощью CSS.   -  person Pointy    schedule 30.10.2014
comment
Не исправляйте это с помощью JS. Используйте empty-cells: show; в своем CSS.   -  person Peeke Kuepers    schedule 03.02.2017
comment
пустые ячейки не работали для меня: o   -  person csomakk    schedule 03.05.2020


Ответы (1)


element.innerText не является стандартной собственностью. Он был введен Microsoft в Internet Explorer, но никакие другие браузеры не могут гарантировать его поддержку (вот почему вы видите причуды).

Используйте element.textContent или переосмыслите свой подход. Создание таблицы из 10 тыс. пустых ячеек звучит как очень плохая идея.

person Madara's Ghost    schedule 30.10.2014
comment
Chrome очень хорошо поддерживает innerText. Так же, как он поддерживает _2 _... - person Florian Margaine; 30.10.2014
comment
Я никогда не говорил, что ни один другой браузер не поддерживает его, я сказал, что никто не гарантирует поддержку, потому что это нестандартно. - person Madara's Ghost; 30.10.2014
comment
В большинстве случаев ячеек намного меньше. 10k - более исключительный случай, но иногда случается. Спасибо за ваш ответ! - person Sebastian; 30.10.2014
comment
Поскольку у старого IE (например, IE9) есть проблемы с textContent, мне пришлось использовать оба метода. Для настройки кросс-браузерного текста см. stackoverflow.com / questions / 11646398 / - person Sebastian; 30.10.2014
comment
Если вам нужна поддержка нескольких браузеров, используйте jQuery. - person Madara's Ghost; 30.10.2014
comment
В настоящее время innerText широко поддерживается всеми браузерами. См. caniuse.com/innertext. - person Josh Desmond; 22.03.2021
comment
Мой ответ остается верным, придерживайтесь стандартов, избегайте причуд. Стоит отметить, что еще в 2014 году innerText не был стандартным свойством, он был добавлен в стандарт намного позже для обеспечения совместимости. - person Madara's Ghost; 22.03.2021