window.getSelection() funktioniert im Firefox nicht

Flow23

Grünschnabel
Hallo Leutz,

auf meiner Webseite kann man in ein Forum Einträge vornehmen und dabei auch Teile des Textes markieren und mit einem Buttonklick formatieren. Markiere ich bsw. einen Teil des Textes in der Textarea und klicke auf den Button "Fett", so wird der markierte Textabschnitt von den Tags "<b>" und "</b>" umrahmt und später dann fett dargestellt. Das funktioniert im IE auch noch wunderbar. Im Firefox allerdings geht es aus mysteriösen Gründen nicht. In meinem JavaScript-Code wird ja sogar geprüft, ob FF- oder IE-Befehle benutzt werden müssen:

Code:
function selektierterText()
{
		var Ausgabe = "";
	
   if (window.getSelection)
   {
   	 	Ausgabe = window.getSelection();
   }
   else if (document.getSelection)
   { 
   		Ausgabe = document.getSelection();
   }
   else if (document.selection) 
   {
   		Ausgabe = document.selection.createRange().text;
   }
   
   return Ausgabe;
}

Beim Firefox wird auch richtigerweise die erste Möglichkeit mit window.getSelection() benutzt, nur wird dort nie etwas zurückgegeben. Der markierte Text ist angeblich immer leer.
Kann mir jemand erklären warum das so ist? Wird die Markierung beim Klick auf den Fett-Button vielleicht kurzzeitig ausser Kraft gesetzt

Bitte dringend um Hilfe.

Grüße Flow
 
Hi,

um auch Markierungen innerhalb einer Textarea erkennen zu können, würde ich wie folgt vorgehen:
Code:
function selektierterText()
{
  var Ausgabe = "";

  if (window.getSelection)
  {
    Ausgabe = window.getSelection();

    if(Ausgabe == ""){
      // Beginn einer eventuellen Markierung ermitteln
      var intStart = document.getElementById("areaID").selectionStart;
      // Ende einer eventuellen Markierung ermitteln
      var intEnd = document.getElementById("areaID").selectionEnd;
      // Markierung
      Ausgabe = document.getElementById("areaID").value.substring(intStart, intEnd);
    }
  }else if (document.getSelection){
    Ausgabe = document.getSelection();
  }else if (document.selection){
    Ausgabe = document.selection.createRange().text;
  }

  return Ausgabe;
}
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Super, ich danke Dir vielmals!! Endlich mal ne konkrete Lösung für das Problem, welches auf so einigen Seiten im Internet beschrieben ist.

Grüße Flow
 
Zurück