Ich versuche, jQuery
zu verwenden, um Codeblöcke zu formatieren, insbesondere um ein <pre>
-Tag innerhalb des <code>
-Tags hinzuzufügen:
Firefox wendet die Formatierung korrekt an, aber IE platziert den gesamten Codeblock in einer Zeile. Wenn ich eine Warnung hinzufüge
%Vor%Ich sehe, dass der IE zusätzlichen Text in das Pre-Tag eingefügt hat:
%Vor%Wenn ich die Seite neu lade, ändert sich die Nummer nach jQuery.
Wenn ich wrap()
anstelle von wrapInner()
verwende, um das <pre>
außerhalb des <code>
-Tags zu umbrechen, behandeln IE und Firefox es korrekt. Aber sollte nicht auch <pre>
innerhalb <code>
funktionieren?
Am liebsten würde ich wrapInner()
verwenden, da ich dann eine CSS-Klasse zum <pre>
-Tag hinzufügen kann, um alle Formatierungen zu verarbeiten. Wenn ich jedoch wrap()
verwende, muss ich Seitenformatierungs-CSS in% co_de einfügen % Tag und Text / Schriftformatierung im <pre>
-Tag, oder Firefox und IE beide ersticken. Keine große Sache, aber ich möchte es so einfach wie möglich halten.
Hat jemand anderes das angetroffen? Fehle ich etwas?
Das ist der Unterschied zwischen Block- und Inline-Elementen . pre
ist ein Block-Level-Element . Es ist nicht legal, es in ein code
-Tag einzufügen, das nur inline enthalten kann Inhalt .
Da Browser jede goodawful Tag-Suppe, die sie im echten Web finden, unterstützen müssen, versucht Firefox zu tun, was Sie meinen. IE passiert es anders, was in der Spezifikation gut ist; Verhalten in diesem Fall ist nicht spezifiziert, weil es nie passieren sollte.
code
durch das pre
ersetzen? (Aufgrund des Block / Inline-Problems sollte das technisch gesehen nur funktionieren, wenn sich die Elemente in einem Element mit befinden "flow" -Inhalt , aber die Browser könnten trotzdem tun, was Sie wollen.) code
Element an erster Stelle, wenn Sie das Verhalten von pre
wollen? code
element pre
auch die whitespace erhaltende Macht mit dem CSS geben white-space: pre
, aber anscheinend IE 6 ehrt nur das im Strict Mode . Wie von markpasc angegeben, ist ein PRE-Element innerhalb des CODE-Elements in HTML nicht erlaubt. Die beste Lösung besteht darin, Ihren HTML-Code so zu ändern, dass & lt; pre & gt; & lt; code & gt; (was einen vorformatierten Block bedeutet, der Code enthält) direkt in Ihrem HTML für Codeblöcke.
Tags und Links javascript html internet-explorer jquery