Вопрос

Мне нужен способ выявить определенные строки в HTML-разметке. Я знаю, что такое строки, но возможно, что они могут быть подстроки других строк в документе. Чтобы найти их, вы выводите специальный разделитель символа (в настоящее время используемый \032). На странице Загрузка мы проходим через HTML и записываем местоположение строк и удалите разделитель.

К сожалению, большинство браузеров показывают символ разделителя, пока мы не сможем найти и удалить их все. Я хотел бы избежать этого, если это возможно. Существует ли символ или строка, которая будет сохранена в содержимом HTML (так что комментарий не работает), но не будет видимым для пользователя? Это также должно быть что-то, что довольно вряд ли появится рядом со строкой, поэтому что-то вроде   не будет работать тоже.

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

Это было полезно?

Решение

‌ - нулевая ширина, не зарегистрированная (см. http://htmlhelp.org/reference/html40/uretities/special.html.)

В случае вероятности, что это уже появляется в вашем тексте, удвоило его (например, ‌‌mytext‌‌


Редактировать в ответ на комментарий: работает в Firefox 3. Обратите внимание, что вы должны искать значение Unicode объекта.

<html>
<body>
    <div id="test">
        This is a &zwnj;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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top