HTML-тег, который заставляет другие теги отображаться как обычный текст
Я бы хотел добавить область на страницу, где весь динамический контент отображается как обычный текст вместо разметки. Например:
<myMagicTag>
<b>Hello</b> World
</myMagicTag>
Я хочу, чтобы тег <b>
отображался только как текст, а не как жирная директива. Я бы предпочел не писать код для преобразования всех "<" на "<
".
Я знаю, что <textarea>
сделает это, но он имеет другие нежелательные побочные эффекты, такие как добавление полос прокрутки.
Существует ли myMagicTag?
Изменить: функция jQuery или javascript, которая делает это, также будет в порядке. Невозможно сделать это на стороне сервера, к сожалению.
Ответы
Ответ 1
Вы можете сделать это с помощью script
элемента (выделено мною):
Элемент script
позволяет авторам включать в свои документы динамические script и блоки данных.
Пример:
<script type="text/plain">
This content has the media type plain/text, so characters reserved in HTML have no special meaning here: <div> ← this will be displayed.
</script>
(Обратите внимание, что допустимое содержимое элемента script
ограничено, например, can not </script>
в качестве текстового содержимого (он закроет элемент script
).)
Обычно элементы script
имеют display:none
по умолчанию в браузерах CSS, поэтому вам необходимо перезаписать это в вашем CSS, например:
script[type="text/plain"] {display:block;}
Ответ 2
Тег был <XMP>
, но в HTML 4 он уже устарел. Браузер, похоже, не отказался от поддержки, но я бы не рекомендовал его ни для чего, кроме быстрой отладки. статья MDN о <XMP>
содержит два других тега <plaintext>
и <listing>
, которые были устарели еще раньше. Я не знаю никакой альтернативы.
Независимо от того, код для кодирования простого текста в HTML довольно прост в большинстве языков программирования.
Примечание: термин аналогичный означает именно то, что все три предназначены для ввода обычного текста в HTML. Я не подразумеваю, что они синонимы или что они ведут себя одинаково - они этого не делают.
Ответ 3
Вы можете использовать функцию, чтобы избежать < > , например:
'span.name': function(){
return this.name.replace(/</g, '<').replace(/>/g, '>');
}
Также посмотрите <plaintext></plaintext>
. Я не использовал его сам, но, как известно, он делает все, что следует, как обычный текст (все, что я хочу сказать, игнорирует закрывающий тег, поэтому весь следующий код отображается как текст)
Ответ 4
Нет, это невозможно, вам нужно HtmlEncode.
Если вы используете серверный язык, это не очень сложно.
В .NET вы бы сделали что-то вроде этого:
string encodedtext = HttpContext.Current.Server.HtmlEncode(plaintext);
Ответ 5
В моем приложении мне нужно предотвратить HTML-рендеринг
"if (a<b || c>100) ..."
и
"cout << ...".
Также весь HTML-код кода кода С++ должен пройти через компилятор GCC с желаемым эффектом. Я ударил по двум схемам:
Во-первых:
//<xmp>
#include <string>
//</xmp>}
По причинам, которые меня избегают, тег <xmp>
устарел. Я нахожу (2016-01-09), что Chrome и FF, по крайней мере, делают тег так, как я хочу. Изучая мою проблему, я увидел замечание, что <xmp> требуется в HTML 5.
Во-вторых, в <head> ... </head>
вставить:
<style type="text/css">
textarea { border: none; }
</style>
Тогда в <body> ... </body>
напишите:
//<br /> <textarea rows="4" disabled cols="80">
#include <stdlib.h>
#include <iostream>
#include <string>
//</textarea> <br />
Примечание. Установите "cols="80"
, чтобы предотвратить появление следующего текста справа. Установите "rows=..."
на еще одну строку, чем в теге. Это предотвращает прокрутки. Этот второй метод имеет несколько недостатков:
- Атрибут "disabled" выделяет область
- Непонятные, сложные комментарии в коде, отправленном компилятору
- Труднее понять
- Больше ввода
Однако этот метод не устарел и не устарел. Боги HTML заставят свои лица сиять вам.