Невидимый разделитель для строк в HTML
-
26-09-2019 - |
Вопрос
Мне нужен способ выявить определенные строки в HTML-разметке. Я знаю, что такое строки, но возможно, что они могут быть подстроки других строк в документе. Чтобы найти их, вы выводите специальный разделитель символа (в настоящее время используемый \032
). На странице Загрузка мы проходим через HTML и записываем местоположение строк и удалите разделитель.
К сожалению, большинство браузеров показывают символ разделителя, пока мы не сможем найти и удалить их все. Я хотел бы избежать этого, если это возможно. Существует ли символ или строка, которая будет сохранена в содержимом HTML (так что комментарий не работает), но не будет видимым для пользователя? Это также должно быть что-то, что довольно вряд ли появится рядом со строкой, поэтому что-то вроде
не будет работать тоже.
Редактировать: Извините, я забыл упомянуть, что строки будут в атрибутах, поэтому любой тег не работает.
Решение
‌
- нулевая ширина, не зарегистрированная (см. http://htmlhelp.org/reference/html40/uretities/special.html.)
В случае вероятности, что это уже появляется в вашем тексте, удвоило его (например, ‌‌mytext‌‌
Редактировать в ответ на комментарий: работает в Firefox 3. Обратите внимание, что вы должны искать значение Unicode объекта.
<html>
<body>
<div id="test">
This is a ‌test
</div>
<script type="application/javascript">
var myDiv = document.getElementById("test");
var content = myDiv.innerHTML;
var pos = content.indexOf("\u200C");
alert(pos);
</script>
</body>
</html>
Другие советы
Вы можете вставить их в <span>
элементы. Это будет работать только для текста на странице (не атрибуты или тому подобное).
В противном случае вы можете вставить персонаж пробела, который ваша программа еще не выводится в рамках HTML, например, символ вкладки (\x09
), вертикальная вкладка (\x0b
) голой возврата каретки (\x0d
) - без новой строки рядом с ним, кодирование текста ALA Windows - или, просто нулевой байт (\x00
).
Лучшее, что я хочу вставить, который не виден в браузере, будет пара меток с некоторым специальным идентификатором, как <span id="delimiter" class="Delimiter"></span>
. Отказ Это не будет отображаться на содержании, в то время как это может присутствовать в докторе. Вам не нужно их удалять.
Вы могли бы использовать слева направо (LTR) следы. Отказ Это для каких-либо тестирования XSS? Если это так, это может быть интерес: Поздравляем для PHP