Есть ли HTML-символ, который пуст (в том числе без пробелов) на всех браузерах?
Есть ли HTML-символ, который на всех (основных) браузерах (плюс IE8 печально) ничего не отображает и не добавляет лишнего места?
Таким образом, альтернатива
но который не добавляет пробела на страницу и который никогда не появится как уродливый маркер "непризнанного символа" или ?
,
Почему: в моем случае я пытаюсь решить проблему на старой, запатентованной CMS, которая удаляет пустые, но необходимые HTML-элементы, которые требуются, потому что другие части системы будут заполнять их динамически.
Представьте себе что-то вроде (упрощенный тривиальный пример) <span class="placeholder" data-type="username"></span>
который заполняется именем пользователя пользователя, если пользователь вошел в систему, - но эта CMS старой школы видит это как будучи пустым и удаляет его.
Ответы
Ответ 1
Кажется, есть два варианта, которые в основном соответствуют законопроекту. Они, похоже, надежно не показывают ничего, когда в <span>
, но они (в частности, второй вариант) могут незначительно повлиять на копирование/вставку и словосочетание в некоторых случаях.
Пространство нулевой ширины
​
aka ​
который ведет себя так же, как (теперь в HTML5) <wbr>
- используется для разрыва слов в определенных точках без изменения отображения слов.
<h1>This text is full<span>​</span> of spans with char<span>​</span>acte<span></span>rs that affe<span>​</span>ct word brea<span></span>king but don't show up</h1>
<h1>Especially in das super<span>​</span>douper​crazy<span>​</span>long<span></span>worden.</h1>
Ответ 2
Есть два символа, которые являются графическими символами, но определяются как нулевая ширина: U + 200B ZERO WIDTH SPACE и U + FEFF ZERO WIDTH NO-BREAK SPACE. Первый действует как символ пробела, так что он является разделителем между словами и допускает разрыв строки в форматировании, тогда как последний явно запрещает разрывы строк. Это зависит от цели и контекста, которые вы должны использовать. Он может быть представлен в HTML как ​
и 
,
Там персонажи хорошо работают в большинстве ситуаций просмотра. Однако в IE 6 они, как правило, отображаются как маленькие прямоугольники, поскольку IE 6 не знает этих символов и пытается отобразить их, как если бы они были графическими символами (которые не имеют глифов).
Существуют также управляющие символы, которые разрешены в HTML, такие как U + 200E LEFT-TO-RIGHT MARK и U + 200D ZERO WIDTH JOINER. У них нет рендеринга как такового, хотя они могут повлиять на рендеринг графических символов, например, путем указания направления записи, влияния на поведение лигатуры и т.д. Из-за возможности таких эффектов может быть опасно использовать их в качестве "фиктивных" символов.