Wie kann ich zeigen HTML - Schnipsel auf einer Webseite , ohne dass jeder ersetzen <
mit <
und >
mit>
?
Mit anderen Worten, gibt es ein Tag , mit dem HTML erst gerendert werden kann, wenn Sie auf das schließende Tag klicken ?
Nein , das gibt es nicht. Im eigentlichen HTML-Code kann man sich einigen Zeichen nicht entziehen:
&
wie &
<
wie <
(Es besteht übrigens keine Notwendigkeit zu entkommen >
aber Menschen tun dies oft aus Gründen der Symmetrie.)
Und natürlich sollten Sie den resultierenden, maskierten HTML-Code darin umgeben, <pre><code>…</code></pre>
um (a) Leerzeichen und Zeilenumbrüche beizubehalten und (b) ihn als Codeelement zu markieren.
Alle anderen Lösungen, z. B. das Umschließen Ihres Codes in ein <textarea>
oder das (veraltete) <xmp>
Element, werden nicht mehr funktionieren . 1
XHTML , die an den Browser als XML deklariert wird (über die HTTP - Content-Type
Header - nur Einstellung ein! DOCTYPE
Ist nicht genug ) alternativ einen CDATA - Abschnitt verwenden:
<![CDATA[Your <code> here]]>
Dies funktioniert jedoch nur in XML, nicht in HTML, und selbst dies ist keine narrensichere Lösung, da der Code kein schließendes Trennzeichen enthalten darf ]]>
. Selbst in XML ist die einfachste und robusteste Lösung das Escape.
1 Beispiel :
>
mit>
<
und&
muss ersetzt werden, Unescaped>
ist in HTML gültig.Die bewährte Methode für HTML:
&
Zeichen durch&
<
Zeichen durch<
>
Zeichen durch>
<pre>
und / oder<code>
Tags.quelle
&
erste und<
danach behandeln.bester Weg:
alte Proben:
Probe 1 :
Probe 2 :
Beispiel 3 : (Wenn Sie tatsächlich einen Codeblock "zitieren", wäre das Markup)
schönes CSS-Beispiel:
Syntax-Hervorhebungscode (für professionelle Arbeit):
Regenbogen (sehr perfekt)
verschönern
Syntaxhighlighter
Markieren
JSHighlighter
beste Links für Sie:
http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-how-to-add-syntax-highlighting-to-any-project/
https://github.com/balupton/jquery-syntaxhighlighter
http://bavotasan.com/2009/how-to-wrap-text-within-the-pre-tag-using-css/
http://alexgorbatchev.com/SyntaxHighlighter/
https://code.google.com/p/jquery-chili-js/
Wie kann man Quellcode in HTML hervorheben?
quelle
Eine naive Methode zum Anzeigen von Code besteht darin, ihn in einen Textbereich aufzunehmen und ein deaktiviertes Attribut hinzuzufügen, damit er nicht bearbeitet werden kann.
Ich hoffe, das hilft jemandem, der nach einer einfachen Möglichkeit sucht, Dinge zu erledigen.
quelle
Veraltet , funktioniert aber in FF3 und IE8.
Empfohlen:
quelle
Ich habe es
<xmp>
einfach so verwendet: http://jsfiddle.net/barnameha/hF985/1/quelle
Das veraltete
<xmp>
Tag macht das im Wesentlichen, ist aber nicht mehr Teil der XHTML-Spezifikation. Es sollte jedoch in allen aktuellen Browsern funktionieren.Hier ist eine andere Idee, ein Hack / Parlour-Trick, mit dem Sie den Code wie folgt in einen Textbereich einfügen können:
Das Einfügen von spitzen Klammern und Code wie diesem in einen Textbereich ist ungültiges HTML und führt in verschiedenen Browsern zu undefiniertem Verhalten. In Internet Explorer wird der HTML-Code interpretiert, während Mozilla, Chrome und Safari ihn nicht interpretieren.
Wenn Sie möchten, dass es nicht bearbeitet werden kann und anders aussieht, können Sie es einfach mit CSS formatieren. Das einzige Problem wäre, dass Browser diesen kleinen Ziehpunkt in der unteren rechten Ecke hinzufügen, um die Größe des Felds zu ändern. Alternativ können Sie auch ein Eingabe-Tag verwenden.
Der richtige Weg, um Code in Ihren Textbereich einzufügen, ist die Verwendung einer serverseitigen Sprache wie dieser PHP, zum Beispiel:
Anschließend wird der HTML-Interpreter umgangen und nicht interpretierter Text in allen Browsern konsistent in den Textbereich eingefügt.
Abgesehen davon besteht die einzige Möglichkeit darin, den Code bei statischem HTML-Code selbst zu umgehen oder bei Verwendung einer solchen Technologie serverseitige Methoden wie HtmlEncode () von .NET zu verwenden.
quelle
<textarea disabled="true" style="border: none;background-color:white; width:100%">
In HTML? Nein.
In XML / XHTML? Sie könnten einen
CDATA
Block verwenden.quelle
Es ist sehr einfach ... Verwenden Sie diesen xmp-Code
quelle
Ich nehme an:
<
sollte vor allem nicht entkommen müssenAlle Ihre Optionen finden Sie in diesem Baum:
<p>
)<
"
und&thing;
Notwendigkeit zu entkommen:"
und&thing;
jeweils<script>
und<style>
nur</script
ist nirgendwo erlaubt<script>
<textarea>
und<title>
nur<textarea>
ist ein guter Kandidat, um Code einzuschließen</html>
dort in</textarea
aus offensichtlichen Gründen</textarea
oder ähnlichem&thing;
muss entkommen:&thing;
Hinweis: Muss
>
nie entkommen. Nicht einmal in normalen Elementen.quelle
<script>
und<style>
können sichtbar gemacht werden, setzen Sie sie einfach in das<body>
withstyle="display: block; white-space: pre;"
undtype="text/html"
oder etwas, wenn Sie nicht möchten, dass es als JavaScript ausgeführt wird. Ich denke, es ist ein ziemlich schöner Trick, der sich gut zum Programmieren und Lehren eignet. Auch<xmp>
ist in großen Browsern noch implementiert, obwohl es veraltet ist.<xmp>
ist kein gültiges HTML5, aber Ihr anderer Trick sieht richtig aus!Wenn Sie einen Teil des Codes anzeigen möchten, den Sie an anderer Stelle auf derselben Seite ausführen, können Sie textContent verwenden (es ist pure-js und wird gut unterstützt: http://caniuse.com/#feat=textcontent ).
Um eine mehrzeilige Formatierung im Ergebnis zu erhalten, müssen Sie den CSS-Stil "white-space: pre;" festlegen. Schreiben Sie die Zeilen einzeln mit "\ r \ n" am Ende.
Hier ist eine Demo: https://jsfiddle.net/wphps3od/
Diese Methode hat einen Vorteil gegenüber der Verwendung von Textbereichen: Code wird nicht wie in einem Textbereich neu formatiert. (Dinge wie
werden vollständig in einem Textbereich entfernt)quelle
<template>
oder etwas verwenden, das normalerweise nicht gerendert wird.Letztendlich ist die beste (wenn auch nervige) Antwort "entkomme dem Text".
Es gibt jedoch viele Texteditoren - oder sogar eigenständige Mini-Dienstprogramme -, die dies automatisch tun können. Sie sollten es also niemals manuell maskieren müssen, wenn Sie nicht möchten (es sei denn, es handelt sich um eine Mischung aus maskiertem und nicht maskiertem Code ...).
Die schnelle Google-Suche zeigt mir diese zum Beispiel: http://malektips.com/zzee-text-utility-html-escape-regular-expression.html
quelle
funktioniert gut für mich ..
"Unter Berücksichtigung des
Alexander's
Vorschlags denke ich, dass dies ein guter Ansatz ist."Wenn wir nur versuchen,
<textarea>
es einfach zu machen, funktioniert es möglicherweise nicht immer, da es möglicherweise schließendetextarea
Tags gibt, die das übergeordnete Tag fälschlicherweise schließen und den Rest der HTML-Quelle im übergeordneten Dokument anzeigen, was unangenehm aussehen würde.using
htmlentities
konvertiert alle zutreffenden Zeichen, z. B.< >
in HTML-Entitäten, wodurch die Möglichkeit von Lecks ausgeschlossen wird.Es gibt vielleicht Vorteile oder Mängel bei diesem Ansatz oder einen besseren Weg, um die gleichen Ergebnisse zu erzielen. Wenn ja, kommentieren Sie dies bitte, da ich gerne von ihnen lernen würde :)
quelle
Sie können eine serverseitige Sprache wie PHP verwenden, um Rohtext einzufügen:
$str
Geben Sie dann den Wert von htmlencoded aus:quelle
Dies ist ein einfacher Trick und ich habe ihn in Safari und Firefox ausprobiert
Es wird so aussehen:
Sie können es sehen , leben hier
quelle
Eigentlich gibt es einen Weg, dies zu tun. Es hat eine Einschränkung (eins), ist aber 100% Standard, nicht veraltet (wie xmp) und funktioniert.
Und es ist trivial. Hier ist es:
Bitte lassen Sie mich erklären. Zuallererst erledigt ein gewöhnlicher HTML-Kommentar die Aufgabe, um zu verhindern, dass der gesamte Block interpretiert wird. Sie können problemlos beliebige Tags hinzufügen, die alle ignoriert werden. Von der Interpretation ignoriert, aber immer noch über verfügbar
innerHTML
! Was also übrig bleibt, ist, den Inhalt abzurufen und die vorhergehenden und nachfolgenden Kommentartoken zu filtern.Außer (denken Sie daran - die Einschränkung) können Sie dort keine HTML-Kommentare einfügen, da (zumindest in meinem Chrome) das Verschachteln von HTML-Kommentaren nicht unterstützt wird und das erste '->' die Show beendet.
Nun, es ist eine böse kleine Einschränkung, aber in bestimmten Fällen ist es überhaupt kein Problem, wenn Ihr Text frei von HTML-Kommentaren ist. Und es ist einfacher, einem Konstrukt zu entkommen, als einer ganzen Reihe von Konstrukten.
Was ist das für eine seltsame
LlNnlljn77fggggkk77csJJK8bbJBKJBkjjjjbbbJJLJLLJo
Saite? Es ist eine zufällige Zeichenfolge, wie ein Hash, die wahrscheinlich nicht im Block verwendet wird und für die? Hier ist der Kontext, warum ich es benutzt habe. In meinem Fall habe ich den Inhalt eines DIV genommen, ihn dann mit Showdown-Markdown verarbeitet und dann die Ausgabe einem anderen Div zugewiesen. Die Idee war, Markdown inline in die HTML-Datei zu schreiben und einfach in einem Browser zu öffnen, und es würde sich beim Laden im laufenden Betrieb verwandeln. Also, in meinem Fall<!--
wurde verwandelt<p><!--</p>
, der Kommentar entkam richtig. Es hat funktioniert, aber den Bildschirm verschmutzt. Um es einfach mit Regex zu entfernen, wurde die zufällige Zeichenfolge verwendet. Hier ist der Code:Und es funktioniert.
Wenn jemand interessiert ist, wird dieser Artikel mit dieser Technik geschrieben. Fühlen Sie sich frei herunterzuladen und schauen Sie in die HTML-Datei.
Es hängt davon ab, wofür Sie es verwenden. Ist es Benutzereingabe? Dann benutze
<textarea>
und entkomme alles. In meinem Fall, und wahrscheinlich auch in Ihrem Fall, habe ich einfach Kommentare verwendet, und es macht den Job.Wenn Sie Markdown nicht verwenden und es nur so erhalten möchten, wie es von einem Tag stammt, ist es noch einfacher:
und JavaScript-Code, um es zu bekommen:
quelle
Es gibt einige Möglichkeiten, um alles in HTML zu umgehen, keine davon ist nett.
Oder Sie könnten eine
iframe
einfügen, die eine einfache alte Textdatei lädt.quelle
Dies ist bei weitem die beste Methode für die meisten Situationen:
Ich hätte die erste Person gewählt, die es vorgeschlagen hat, aber ich habe keinen Ruf. Ich fühlte mich jedoch gezwungen, etwas zu sagen, um Menschen zu helfen, die im Internet nach Antworten suchen.
quelle
So habe ich es gemacht:
quelle
es wird das maskierte HTML zurückgeben
quelle
Du könntest es versuchen:
quelle
Es funktioniert möglicherweise nicht in jeder Situation, aber wenn Sie Codefragmente in a platzieren,
textarea
werden sie als Code angezeigt.Sie können den Textbereich mit CSS formatieren, wenn Sie nicht möchten, dass er wie ein tatsächlicher Textbereich aussieht.
quelle
Dies ist ein bisschen wie ein Hack, aber wir können so etwas verwenden wie:
Mit diesem CSS zeigt der Browser Skripte im Hauptteil an. Es wird nicht versucht, dieses Skript auszuführen, da es einen unbekannten Typ hat
text/html
. Es ist nicht erforderlich, Sonderzeichen in a zu<script>
maskieren, es sei denn, Sie möchten einen Abschluss einfügen</script>
Tag einfügen.Ich verwende so etwas, um ausführbares JavaScript im Hauptteil der Seite anzuzeigen, für eine Art "Lese- und Schreibprogramm".
Diese Frage enthält weitere Informationen. Wann sollten Tags sichtbar sein und warum können sie angezeigt werden? .
quelle
quelle
Eine Kombination aus ein paar Antworten, die hier zusammenarbeiten:
quelle