Text Vorschau in JavaScript

Billie

Erfahrenes Mitglied
Hallo Ihr lieben!

Also ich versuche gerade einen Editor zu verwircklichen, der die Benutzerangaben sofort interpretiert und ausgibt. Mit anderen Worten, ich schreibe hier gerade einen Beitrag, dieser sollte aber nicht erst durch klicken auf den Button "Vorschau" angezeigt werden, sondern sofort 1:1 als HTML. Ich hab schon soetwas probiert, doch da ich noch neu in JavaScript bin stelle ich mir gerade die Frage wieso mein Script nur genau 1x funktioniert:

http://members.aon.at/jbo_checka/editor/

Ein Buchstabe, danach Sense - warum funktioniert das nur 1x und dann beim 2x nicht mehr?
 
Ich würde es mit dem IE only Attribut contentEditable machen:
PHP:
<div id="bla" contentEditable></div>
Und folgendermassen kannst du dann das Zeugs bearbeiten:
PHP:
window.document.getElementById("bla").focus();
execCommand("Bold", "", "");

Weitere Informationen zu execCommand:
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/execcommand.asp

Eine Befehlsübersicht dazu:
http://msdn.microsoft.com/workshop/author/dhtml/reference/commandids.asp

Auslesen kannst du den HTML-Code dann so:
PHP:
inhalt = window.document.getElementById("bla").innerHTML;
 
Ich hab deinen "Fehler" gefunden.
Du verwendest document.write und document.close.
Das darfst du dafür nicht hernehmen.
Wenn die Seite dann komplett geladen ist, wird eine neue Seite geschrieben und du hast die Funktion dann nicht mehr verfügbar, die du hernimmst.

Entweder nimmst du:
document.getElementById("ID des Elements DIV etc.").innerHTML = "Quelltext in HTML";

Oder:
Du übernimmst die Funktion show_html() vom oberen Frame in den unteren.
Dann ist der Aufruf statt "parent.topFrame.show_html()" "show_html()".

Die show_html musst du dann noch anpassen:
PHP:
 function show_html()
 {
  parent.topFrame.document.write(parent.mainFrame.document.form1.html_code.value);
  parent.topFrame.document.close();
 }

Fertig.
Müsste dann funktionieren.
Methode 2 dürfte in mehr Browsern funktionieren als die erste.
 
Zurück