innerHTML verschluckt erste Zeile wenn HTML-Kommentar - Was nun?
hempelr
- javascript
Hallo,
versuche seit einiger Zeit vergeblich, den IE beim Umwandeln von HTML-Text aus einem Datenbankfeld / Textarea in HTML-interpretierbare HTML-Ausgabe und wieder zurück davon zu überzeugen, die erste Zeile, wenn sie eine Kommentarzeile ist, nicht zu verschlucken.
Bekomme das leider nicht hin - nur wenn zwangsweise ein br (oder anderes HTML-Element explizit mit Inhalt, attributlose oder mit Style-Attributen versehene tuns auch nicht) eingefügt wird,behält er die führende Kommentarzeile - aber das ist nicht gewollt (br oder anderes HTML-Element darf da nicht hin - wenn eine HTML-Kommentarzeile vor allen anderen Elementen steht, soll sie da auch bleiben)
So sieht im Moment der betreffende Code-Teil aus
...
function returnRTE(rte) { //return the object of the document in the iframe
if(isIE || isOpera)
return frames['iframe'+rte];
else
return document.getElementById('iframe'+rte).contentWindow;
}
...
var oRTE = returnRTE(rte).document;
...
if(isIE){
var startHTMLcomment = oRTE.body.innerText.match(/^<!--.*?-->/);
oRTE.body.innerText = oRTE.body.innerText.replace(/[\r\n]/g, '');
oRTE.body.innerText = oRTE.body.innerText.replace(/\s/g, ' ');
var htmlSrc = oRTE.body.innerText;
if (startHTMLcomment) {
oRTE.body.innerHTML = "<br>" + htmlSrc;
} else {
oRTE.body.innerHTML = htmlSrc;
}
} else {
htmlSrc = oRTE.body.ownerDocument.createRange();
htmlSrc.selectNodeContents(oRTE.body);
oRTE.body.innerHTML = htmlSrc.toString().replace(/\s/g, ' ');
}
Das ganze ist ein einfacher Editor, der unter der MIT-Lizenz steht und von mir etwas angepasst wurde / werden soll (soweit meine JS-Kenntnisse da reichen und ich das Teil verstanden habe...URL der "Rohware":RTE-Edior Fork