Отображение строк комментариев HTML (<! - ->) в файлах HTML - PullRequest
3 голосов
/ 16 апреля 2010

Я создаю поисковую систему с исходным кодом и возвращаю результаты на HTML-странице (точнее aspx, но логика представления в HTML).

Когда кто-то ищет строку, я также возвращаю всю строку кода, где эту строку можно найти в файле. Однако некоторые строки кода взяты из файлов HTML / aspx, и эти строки содержат комментарии, специфичные для HTML ().

Когда я пытаюсь напечатать эту строку на странице HTML, она интерпретирует ее как комментарий и не показывает ее на экране .... как мне решить эту проблему, чтобы она действительно появилась?

Любая помощь будет приветствоваться. Спасибо.

Ответы [ 4 ]

7 голосов
/ 16 апреля 2010

Как и любой другой HTML - скрывать специальные символы для сущностей. В частности от < до &lt;

3 голосов
/ 16 апреля 2010

Escape-символы <и> на &lt; и &gt;

см. Также: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

2 голосов
/ 16 апреля 2010

Каждый раз, когда вы выводите текст на страницу HTML, вы должны закодировать его HTML. Если вы этого не сделаете, комментарии (и другие строки, подобные разметке) исчезнут, но у вас также будут большие дыры в безопасности межсайтовых сценариев, поскольку потенциально ненадежные стороны смогут вставить <script> в ваш контекст безопасности.

(точнее aspx

В .NET метод HTML-кодирования вызывается, естественно, HTMLEncode. Вы также можете использовать веб-элемент управления, который автоматически кодирует HTML-код, например Literal с literalmode encode .

но логика представления в HTML)

Не уверен, что вы подразумеваете под этим, но если вы используете innerHTML для установки содержимого из скрипта, вам нужно написать свой собственный HTML-кодировщик, поскольку в JS нет встроенного:

// HTML-encode a string for use in text content or an attribute value delimited by
// double-quotes
//
function HTMLEncode(s) {
    return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
}

или, что потенциально лучше, использовать методы и свойства DOM для установки динамического содержимого, а не возиться со строками HTML. (Для настройки текстового содержимого используйте element.textContent=, возвращаясь к element.innerText для IE, который его не поддерживает.)

0 голосов
/ 16 апреля 2010

Вы можете использовать XML CDATA для этого:

<![CDATA[ 
  some text with <!-- comments -->
]]>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...