HTML-тег, который заставляет другие теги отображаться в виде простого текста
Я хотел бы добавить область на страницу, где весь динамический контент отображается в виде простого текста, а не разметки. Например:
<myMagicTag>
<b>Hello</b> World
</myMagicTag>
Я хочу <b>
тег, который будет отображаться как просто текст, а не как жирная директива. Я бы предпочел не писать код для преобразования каждого "<" в "an" <
".
я знаю это <textarea>
будет делать это, но у него есть другие нежелательные побочные эффекты, такие как добавление полос прокрутки.
MyMagicTag существует?
Редактировать: JQuery или функция JavaScript, которая делает это, также будет в порядке. К сожалению, не могу сделать это на стороне сервера.
5 ответов
Вы можете сделать это с 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
элемент ограничен, например, вы не можете иметь </script>
как текстовое содержимое (это закроет script
элемент).)
Как правило, script
элементы имеют display:none
по умолчанию в браузере CSS, так что вам нужно перезаписать это в вашем CSS, например:
script[type="text/plain"] {display:block;}
Вы можете использовать функцию для выхода из < >, например:
'span.name': function(){
return this.name.replace(/</g, '<').replace(/>/g, '>');
}
Также взгляните на <plaintext></plaintext>
, Я сам этим не пользовался, но известно, что все, что следует, отображается в виде простого текста (под всем, что я имею в виду, он игнорирует закрывающий тег, поэтому весь следующий код отображается как текст).
Тег раньше был <XMP>
но в HTML 4 это уже устарело. Похоже, что браузер не отказался от поддержки, но я бы не советовал его ни для чего, кроме быстрой отладки. Статья MDN о<XMP>
перечисляет два других тега, <plaintext>
а также <listing>
, которые были объявлены устаревшими еще раньше. Я не знаю ни одной текущей альтернативы.
Как бы то ни было, код для кодирования простого текста в HTML довольно прост в большинстве языков программирования.
Примечание: термин " аналог" означает именно то, что все три предназначены для введения простого текста в HTML. Я не подразумеваю, что они являются синонимами или ведут себя одинаково - нет.
Нет специального тега, кроме устаревшего <xmp>
.
Но тег скрипта может хранить неформатированные данные.
Вот единственное решение, показывающее динамический контент, как вы хотели.
Запустите фрагмент кода для получения дополнительной информации.
<script id="myMagicTag" type="text/plain" style="display:block;">
<b>Hello</b> World
</script>
Use <a href="https://stackru.com/questions/38143580/when-should-script-tags-be-visible-and-why-can-they">Visible</a> <a href="https://html.spec.whatwg.org/multipage/scripting.html#data-block">Data-blocks</a>
<script>
document.querySelector("#myMagicTag").innerHTML = "<b>Unformatted</b> dynamic content"
</script>
Нет, это невозможно, вам нужно HtmlEncode.
Если вы используете серверный язык, это не очень сложно.
В.NET вы бы сделали что-то вроде этого:
string encodedtext = HttpContext.Current.Server.HtmlEncode(plaintext);
В моем приложении мне нужно запретить рендеринг HTML
"if (a<b || c>100) ..."
а также
"cout << ...".
Также вся область кода C++ HTML должна проходить через компилятор GCC с желаемым эффектом. Я ударил по двум схемам:
Первый:
//<xmp>
#include <string>
//</xmp>}
По причинам, которые избегают меня, <xmp>
тег устарел. Я обнаружил (2016-01-09), что Chrome и FF, по крайней мере, отображают тег так, как я хочу. Исследуя мою проблему, я заметил, что в 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 заставят их лица сиять перед вами.