HTML and CSS Reference
In-Depth Information
3.4 Lesen und Schreiben
Nun kann der Benutzer zwar mit dem Widget interagieren, aber ein Informationsaustausch mit der
restlichen Anwendung findet noch nicht statt. Unser erstes Ziel besteht darin, einen Text zu setzen
und nach dem Editieren wieder auszulesen. Da dieser Text als JavaScript String behandelt wird und
beliebige Zeichen beinhalten kann, müssen alle Zeichen maskiert werden, die diesen unterbrechen
können (Zeilenumbrüche, Anführungszeichen). Dazu implementieren wir die Hilfsmethode esca-
peText . Die eigentlichen Setter und Getter sehen dann in der einfachsten Variante folgendermaßen
aus:
public void setText( String text ) {
browser.evaluate(
"editor.instance.setData( \"" + escapeText( text ) + "\" );"
);
}
public String getText() {
return ( String )browser.evaluate( "return editor.instance.getData();" );
}
Die Anwendung kann nun den Text des Widgets setzen und auslesen, vorausgesetzt das geschieht,
nachdem das HTML-Dokument und der CKEditor vollständig geladen wurden. Der folgende Code
wird jedoch noch nicht wie erwartet funktionieren:
CKEditor ckEditor = new CKEditor( shell, SWT.NONE );
ckEditor.setText( "<b>Hello World!</b>" );
System.out.println( ckEditor.getText() );
Der Grund dafür ist, dass das HTML-Dokument durch den Browser asynchron geladen wird und
deshalb nicht sofort nach dem Setzen des URL darauf zugegriffen werden kann. Dazu kommt im
Fall des CKEditor, dass dieser selbst auch asynchron geladen wird. Er steht also selbst nach dem Ab-
arbeiten des "load" -Events (siehe HTML-Auszug) noch nicht zur Verfügung. Um das zu umgehen,
kann man einen Script-Puffer einbauen, der JavaScript-Code grundsätzlich zwischenspeichert, bis er
tatsächlich ausgeführt werden kann. Das kann auch nach der ersten Initialisierung vorkommen, wenn
in JavaScript asynchron agierende Funktionen wie editor.instance.setData aufgerufen werden. Eine
Hilfsmethode erleichtert die Verwendung des Puffers (Listing 3.4).
Search WWH ::




Custom Search