molily: Nach Einfügen von BBCode Wort markiert lassen

Beitrag lesen

Hallo,

ist es bei diesem Script möglich, dass ein Wort, markiert bleibt, nachdem der BBCode eingefügt wurde?

Ja.

Wenn du dir das Script mal anschaust, wirst du Abschnitte finden, die bereits für die Markierung bzw. die Cursorposition zuständig sind. Die kannst du nach dem bereits demonstriertem Schema anpassen.

    /* Anpassen der Cursorposition */  
    range = document.selection.createRange();  
    if (insText.length == 0) {  
      range.move('character', -eTag.length);  
    } else {  
      range.moveStart('character', aTag.length);  
      range.moveEnd('character', -eTag.length);  
    }  
    range.select();

sowie

    /* Anpassen der Cursorposition */  
    var startPos, endPos;  
    if (insText.length == 0) {  
      startPos = endPos = start + aTag.length;  
    } else {  
      startPos = start + aTag.length;  
      endPos = startPos + insText.length;  
    }  
    input.selectionStart = startPos;  
    input.selectionEnd = endPos;

Außerdem müsstest du die Abfrage, welche Methode gewählt wird. Opera kennt nämlich sowohl createRange als auch selectionStart/selectionEnd umkehren, aber die Auswahl ist eine andere beim Einfügen der Codes (im IE ist der gesamt Text der Range markiert, im Opera liegt der Cursor hinter dem Range-Text ohne Markierung).

if (typeof input.selectionStart != 'undefined') {  
   ... arbeite mit selectionStart und selectionEnd  
} else if (typeof document.selection != 'undefined') {  
   ... Nutze das Microsoft-Modell der Ranges  
}

Mathias