Hallo Matthias Scharwies,
xmp
Wird auch heute noch verstanden, hat aber - zumindest in Chrome - nicht mehr die "Parse mich nicht" Semantik.
HTML-Maskierer
Ist etwas, was ich auch schon überlegt hatte. Die Frage war dann, wo ich den Quellcode hinterlege - und kam auf ein <script> Element. Und dann fiel mir auf: Das kann man ja auch sichtbar machen.
Ein Problem entsteht nur, wenn der Beispielcode <script></script> enthält, in dem Moment geht es schief, weil der script-Block vorzeitig beendet wird.
Die Alternative könnte ein <template> Element sein, aber dann braucht man wirklich JavaScript, um den Template-Inhalt in den Code-Rahmen zu übertragen.
Ein HTML Maskierer, um den HTML Code darzustellen, ist allerdings nicht erforderlich. Das Wiki-Beispiel ist in dieser Beziehung mehrfacher Müll - sorry, falls es von Dir stammt.
- Der Inhalt der textarea müsste im click-Handler ausgelesen werden, nicht vor dem click-Handler. So, wie es jetzt ist, wird eine Benutzereingabe nicht verarbeitet.
- Unclean Code: htmlSpecialChars tut zu viel, es darf nur die Maskierung ausführen. Die Zuweisung an das output-Element gehört davon getrennt
- Das Ergebnis von str.replace müsste wieder an str zugewiesen werden
- Die Maskierung ist komplett unnötig, wie sich durch die fehlende Zuweisung zeigt. Auslesen des innerHTML einer Textarea liefert bereits HTML Symbole statt <&>, und wenn ich etwas an die innerText Eigenschaft eines Elements zuweise, brauche ich eh nicht zu maskieren
- innerText ist ein IE Erbe, besser ist textContent.
TL;DR: Ein HTML Maskierer ist in JavaScript zumeist überflüssig. Ich habe jederzeit die Wahl zwischen innerHTML und textContent, je nach Bedarf.
Wenn ich mich bis 15:00 nicht drum gekümmert habe, komme ich erst morgen dazu.
Rolf
sumpsi - posui - obstruxi