Wie kann ich HTML-Snippets auf einer Webseite anzeigen, ohne sie ersetzen zu müssen? <
mit <
und >
mit >
?
Mit anderen Worten, gibt es ein Tag für Rendern Sie kein HTML, bis Sie auf das schließende Tag treffen?
Stefan
Wie kann ich HTML-Snippets auf einer Webseite anzeigen, ohne sie ersetzen zu müssen? <
mit <
und >
mit >
?
Mit anderen Worten, gibt es ein Tag für Rendern Sie kein HTML, bis Sie auf das schließende Tag treffen?
Die altbewährte Methode für HTML:
Tipp: Um das Ersetzen des HTML-Codes zu beschleunigen, können Sie Notepad++ mit der Erweiterung „TextFX“ verwenden. Markieren Sie den Text, gehen Sie zu Menü >TextFX >TextFX Convert >Encode HTML (&<>“) → Fertig.
– Benutzerbild
13. Januar 2013 um 18:07 Uhr
Gibt es zufällig eine vorhandene JavaScript-Bibliothek, die dies kann?
– Anderson Green
12. April 2013 um 22:42 Uhr
Dies beantwortet nicht die Frage, die lautete „ohne dass ersetzt werden muss …“. Außerdem ist das Ersetzen von „>“ unnötig.
– Jukka K. Korpela
24. April 2014 um 11:19 Uhr
Und die Reihenfolge ist auch wichtig. Stellen Sie sicher, dass Sie damit umgehen &
zuerst und <
nachher.
– Tolga Evcimen
18. Juni 2015 um 5:34 Uhr
@AndersonGreen Hier ist die Bibliothek: export const escapeHtml = str => str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
. Vielleicht sollte jemand ein NPM-Paket dafür erstellen, z left-pad
? 😆
– Lionel Rowe
10. September 2020 um 20:01 Uhr
Erfan Safarpoor
Probe 1:
<pre>
This text has
been formatted using
the HTML pre tag. The brower should
display all white space
as it was entered.
</pre>
Probe 2:
<pre>
<code>
My pre-formatted code
here.
</code>
</pre>
Probe 3: (Wenn Sie tatsächlich einen Codeblock “zitieren”, wäre das Markup)
<blockquote>
<pre>
<code>
My pre-formatted "quoted" code here.
</code>
</pre>
</blockquote>
Die in der Antwort verwendeten Elemente gehen überhaupt nicht auf die Frage ein: Sie haben keinen Einfluss auf die Interpretation von „<“, das ein Tag beginnt.
– Jukka K. Korpela
24. April 2014 um 11:17 Uhr
developer.mozilla.org/en-US/docs/Web/HTML/Element/xmp sagt: “Verwenden Sie dieses Element nicht. Es ist seit HTML3.2 veraltet und wurde nicht konsistent implementiert. Es wurde vollständig aus der Sprache in HTML5 entfernt.”
– Nick Reis
1. August 2018 um 8:40 Uhr
Ich habe das gepostete CSS verwendet, danke, es hat viele Designprobleme behoben
– Basheer AL-MOMANI
31. August 2020 um 9:41 Uhr
Konrad Rudolf
gibt es ein tag für HTML erst rendern, wenn Sie auf das schließende Tag klicken?
Nein, da ist nicht. In HTML selbst gibt es keine Möglichkeit, einige Zeichen zu maskieren:
&
als &
<
als <
(Es besteht übrigens keine Notwendigkeit zu entkommen >
aber die Leute tun es oft aus Gründen der Symmetrie.)
Und natürlich sollten Sie den resultierenden, maskierten HTML-Code darin einschließen <pre><code>…</code></pre>
um (a) Leerzeichen und Zeilenumbrüche beizubehalten und (b) es als Codeelement zu markieren.
Alle anderen Lösungen, wie das Umhüllen Ihres Codes in eine <textarea>
oder die (veraltet) <xmp>
Element, wird brechen.1
XHTML, das dem Browser als XML deklariert wird (über die HTTP Content-Type
Header! — bloßes Setzen von a DOCTYPE
ist nicht genug) könnte alternativ einen CDATA-Abschnitt verwenden:
<![CDATA[Your <code> here]]>
Aber das funktioniert nur in XML, nicht in HTML, und selbst das ist keine narrensichere Lösung, da der Code das schließende Trennzeichen nicht enthalten darf ]]>
. Also ist selbst in XML die einfachste und robusteste Lösung das Maskieren.
1 Fallbeispiel:
textarea {border: none; width: 100%;}
<textarea readonly="readonly">
<p>Computer <textarea>says</textarea> <span>no.</span>
</textarea>
<xmp>
Computer <xmp>says</xmp> <span>no.</span>
</xmp>
Hübsch. Das ist also Teil des HTML-Standards? Oder ist es tiefer, wie ein Teil des XML-Standards?
– aiobe
12. Mai 2010 um 15:50 Uhr
In HTML wird dies ` here]]>` rendern
– Dolph
12. Mai 2010 um 16:03 Uhr
Ja, das ist eine gute Antwort, aber vergessen Sie nicht zu ersetzen >
mit >
– Alan
28. Juli 2016 um 13:13 Uhr
@Alan Ich würde das auch tun, aber das ist es eigentlich nicht notwendig: nur <
und &
müssen ersetzt werden, nicht entgangen >
ist innerhalb von HTML gültig.
– Konrad Rudolf
28. Juli 2016 um 13:25 Uhr
@SamWatkins Aber deine Lösung ist nicht einfacher als bei mir. Du hast dich gerade verändert was muss entkommen, und Ihre Lösung ist hacky, wie Sie zugeben. Es gibt buchstäblich keinen Vorteil, es richtig zu machen. Dies ist ein gelöstes Problem mit einer korrekten Lösung. Keine Notwendigkeit für Hacks, es sei denn, Ihr gesamtes Setup ist hackig.
– Konrad Rudolf
3. Juni 2020 um 8:28 Uhr
Krunal
Eine Art naive Methode zum Anzeigen von Code besteht darin, ihn in einen Textbereich aufzunehmen und ein deaktiviertes Attribut hinzuzufügen, sodass er nicht bearbeitet werden kann.
<textarea disabled> code </textarea>
Ich hoffe, das hilft jemandem, der nach einer einfachen Möglichkeit sucht, Dinge zu erledigen.
s_hewitt
Veraltetfunktioniert aber in FF3 und IE8.
<xmp>
<b>bold</b><ul><li>list item</li></ul>
</xmp>
Empfohlen:
<pre><code>
code here, escape it yourself.
</code></pre>
barnameha
ich benutzte <xmp>
genau wie dieser :
http://jsfiddle.net/barnameha/hF985/1/
Erich Leschinski
Das Abgelehnte <xmp>
tag macht das im Wesentlichen, ist aber nicht mehr Teil der XHTML-Spezifikation. Es sollte aber trotzdem in allen aktuellen Browsern funktionieren.
Hier ist eine andere Idee, ein Hack/Salontrick, Sie könnten den Code so in ein Textfeld einfügen:
<textarea disabled="true" style="border: none;background-color:white;">
<p>test</p>
</textarea>
Das Einfügen von spitzen Klammern und solchem Code in einen Textbereich ist ungültiges HTML und führt zu undefiniertem Verhalten in verschiedenen Browsern. Im Internet Explorer wird das HTML interpretiert, während Mozilla, Chrome und Safari es uninterpretiert lassen.
Wenn Sie möchten, dass es nicht bearbeitbar ist und anders aussieht, können Sie es einfach mit CSS gestalten. Das einzige Problem wäre, dass Browser diesen kleinen Ziehgriff in der unteren rechten Ecke hinzufügen, um die Größe des Felds zu ändern. Oder versuchen Sie stattdessen, stattdessen ein Eingabe-Tag zu verwenden.
Der richtige Weg, Code in Ihr Textfeld einzufügen, ist die Verwendung einer serverseitigen Sprache wie beispielsweise dieses PHP:
<textarea disabled="true" style="border: none;background-color:white;">
<?php echo '<p>test</p>'; ?>
</textarea>
Dann umgeht es den HTML-Interpreter und fügt uninterpretierten Text konsistent über alle Browser in den Textbereich ein.
Abgesehen davon besteht die einzige Möglichkeit darin, den Code selbst zu maskieren, wenn statisches HTML verwendet wird, oder serverseitige Methoden wie HtmlEncode () von .NET zu verwenden, wenn eine solche Technologie verwendet wird.
Das ist eine schreckliche Idee. Was wäre, wenn dynamisches HTML angezeigt würde und jemand Folgendes tun würde?