ich möchte auf meiner Seite durch (ja ) javascript HTML-Tags austauschen lassen. Jetzt habe ich mir einen Code zusammen geschrieben, dieser erfüllt aber nur zur hälfte seine Arbeit (der Html Tag „p“ soll ausgetauscht werden in […]):
var source;
source = document.body.innerHTML;
source = source.replace(/<p>/g, ' <textarea>' );
source = source.replace(/<\/p>/g, ' </textarea>' );
document.body.innerHTML = source;
sollte funktionieren.
"/" werden escaped und beim zweiten fehlte der slash.
ich hab es mal auf einer neuen Seite ausprobiert. Hier der Code:
[code]
blabla test
haha
[/code]
Er gibt mir nur die beiden "p" Tags aus ohne die Textarea's, so als würde der Code nicht existieren.
Beim validieren gibt er mir aus, das im Script ein Fehler ist
[quote]source = source.replace(/</p>/g, ‘’ );
The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem. [/quote]
Was aber so gesehen ja keins ist, da dieses im Javascript liegt und so gewollt ist.
[quote]Er gibt mir nur die beiden “p” Tags aus ohne die Textarea’s, so als würde der Code nicht existieren.
[/quote]
Diese existieren auch nicht zu der Zeit, wenn das Skript ausgeführt wird.
Ich meine ja, formal hat der Validator da zumindest bei einem HTML4-Dokument unrecht, weil
die Spezifikation sagt, daß script CDATA enthält. Hat den Validator also nicht zu kümmern, was
da drinsteht.
Praktisch ist es aber wohl so, daß browser damit Probleme haben, weswegen man bei XHTML
den Inhalt auch als PCDATA angegeben hat, man den Kram also nicht unmaskiert dort
reinschreiben darf.
Kurzum, man kommentiert in der Praxis für HTML den Inhalt von script und style einfach aus
In XHTML maskiert man kritische Zeichen oder kennzeichnet den Inhalt meist als CDATA und
kommentiert aus oder lagert den Kram gleich in eine externe Datei aus - was die Universallösung
für beide Sprachvarianten ist.
Ansonsten interessiert den Validator die Skriptausführung auch nicht, weil sie inhaltlich irrelevant
ist. Den kümmert nur, was wirklich als Inhalt vorhanden ist. Von daher ist es für den auch
belanglos, ob man in einer inhaltlich ziemlich sinnlosen Skriptaktion ein spezifisches
Blockelement wie p gegen ein inzeilige Formularelement wie textarea austauscht.
Ich hab den Fehler bei mir gefunden. (siehe alter Quelltext; voriger Post). Dort stand
source = source.replace(/ /g, ‚‘ );
und das ist natürlich falsch (Tippfehler)
Jetzt geht es wieder.
Jetzt gibt es ein weiteres Problem. In diesem
…
Tag ist nun ein „H1“ eingefügt. Hier macht er vor dem „
“-Tag und hinter dem „
“-Tag jeweils ein Textfeld, weil ein „h1“-Tag enthalten ist.
[code]
Überschrift
Text blablabla…
[/code]
Daraus wird:
[code]
Überschrift
Text blablabla....
[/code]
Weiß jemand warum das Script es macht?
[quote]h1-h6
Darf innerhalb der folgenden HTML-Elemente vorkommen:
[…]div[…][/quote]
So steht es da. Man könnte sich jetzt natürlich noch mal die Spezifikation vom W3C angucken, aber dazu hab ich grad keine Lust.