Есть ли HTML-символ, который пуст (в том числе без пробелов) на всех браузерах?

Есть ли HTML-символ, который на всех (основных) браузерах (плюс IE8 печально) ничего не отображает и не добавляет лишнего места?

Таким образом, альтернатива   но который не добавляет пробела на страницу и который никогда не появится как уродливый маркер "непризнанного символа" или ? ,


Почему: в моем случае я пытаюсь решить проблему на старой, запатентованной CMS, которая удаляет пустые, но необходимые HTML-элементы, которые требуются, потому что другие части системы будут заполнять их динамически.

Представьте себе что-то вроде (упрощенный тривиальный пример) <span class="placeholder" data-type="username"></span> который заполняется именем пользователя пользователя, если пользователь вошел в систему, - но эта CMS старой школы видит это как будучи пустым и удаляет его.

Ответ 1

Кажется, есть два варианта, которые в основном соответствуют законопроекту. Они, похоже, надежно не показывают ничего, когда в <span>, но они (в частности, второй вариант) могут незначительно повлиять на копирование/вставку и словосочетание в некоторых случаях.

Пространство нулевой ширины

&#8203; aka &#x200B; который ведет себя так же, как (теперь в HTML5) <wbr> - используется для разрыва слов в определенных точках без изменения отображения слов.

<h1>This text is full<span>&#8203;</span> of spans with char<span>&#8203;</span>acte<span></span>rs that affe<span>&#8203;</span>ct word brea<span></span>king but don't show up</h1>
<h1>Especially in das super<span>&#8203;</span>douper&#8203;crazy<span>&#8203;</span>long<span></span>worden.</h1>

Ответ 2

Есть два символа, которые являются графическими символами, но определяются как нулевая ширина: U + 200B ZERO WIDTH SPACE и U + FEFF ZERO WIDTH NO-BREAK SPACE. Первый действует как символ пробела, так что он является разделителем между словами и допускает разрыв строки в форматировании, тогда как последний явно запрещает разрывы строк. Это зависит от цели и контекста, которые вы должны использовать. Он может быть представлен в HTML как &#x200b; и &#xfeff; ,

Там персонажи хорошо работают в большинстве ситуаций просмотра. Однако в IE 6 они, как правило, отображаются как маленькие прямоугольники, поскольку IE 6 не знает этих символов и пытается отобразить их, как если бы они были графическими символами (которые не имеют глифов).

Существуют также управляющие символы, которые разрешены в HTML, такие как U + 200E LEFT-TO-RIGHT MARK и U + 200D ZERO WIDTH JOINER. У них нет рендеринга как такового, хотя они могут повлиять на рендеринг графических символов, например, путем указания направления записи, влияния на поведение лигатуры и т.д. Из-за возможности таких эффектов может быть опасно использовать их в качестве "фиктивных" символов.