info@a-coding-project.de

Markierung ausfragen

Jeder wird dieses Problem schon einmal gehabt haben oder es noch bekommen: Wie bekomme ich heraus, was der Benutzer gerade markiert hat? Der MS Internet Explorer (ab 4.0) und der Netscape Navigator (ab 4.0) bieten zu dieser Frage interessante Möglichkeiten.

Internet Explorer

Microsoft hat für dieses Problem ein eigenes Objekt geschaffen: document.selection. Dieses enthält alle Eigenschaften der aktuellen Markierung. Um den gerade ausgewählten Text heraus zu bekommen erstellt man ein TextRange-Objekt [Zeile 1] und fragt von diesem die text-Eigenschaft ab [Zeile 2]. Alternativ ist es auch möglich direkt den verwendeten HTML-Code über die htmlText-Eigenschaft [Zeile 3] heraus zu bekommen. Beispiel:

a = document.selection.createRange();
b = a.text;
c = a.htmlText;

Netscape Navigator

Der Netscape Navigator bietet zur Lösung des Problems eine eigene Methode des document-Objekts, die getSelection-Methode, an. Sie ermittelt den aktuell markierten Text. Beispiel:

a = document.getSelection(); 

Ersetzen

Das Ersetzen des markierten Textes durch einen neuen Text ist meist der nächste Schritt der angestrebt wird. Mit dem Internet Explorer ist das ziemlich einfach: Der selection wird einfach ein neuer Wert zugewiesen. Beispiel:

document.selection.createRange().text = 'neuer Text'; 

Für die Umsetzung im Netscape Navigator existieren jedoch nur Gedankenexperimente. Die Überlegungen gehen dahin, unsichtbare Laufzeichen, z.B. in form von Sonderzeichen, einzufügen. Beim Ersetzen werden diese Zeichen ausgelesen, somit die Stelle ermittelt, und der Text neu zusammen gesetzt. Allerdings sind aus diesen Ideen bisher noch keine vorzeigbaren Ergebnisse entstanden (falls doch, schreiben Sie bitte dem Autor / siehe unten).

Hinweise

Da die Browser jeweils nicht diese Methoden des anderen Browsers unterstützen, sollte an eine Browser-Erkennung gedacht werden. außerdem ist zu bedenken, dass z.B. bei Klick auf einen Link, dieser die Markierung erhalten kann (die Maus brauch nur ein Stückchen verrutschen ...), deshalb empfiehlt sich die Abfrage der Markierung z.B. nur bei onMouseOver- oder derartigen Events.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant