ugrás a tartalomhoz

Szövegkijelölés esetén a kurzo pozíciója

Methos · 2009. Jan. 2. (P), 23.19
Sziasztok!

Egy igen érdekes kérdéssel állnék elő, nekem nem sikerült rá megoldást találnom.

Adott egy div, és benne egy sima szöveg. Azt szeretném megtudni, hogy ha kijelölöm a szöveget, akkor a kijelölést hányadik karaktertől történt meg. Tehát nem textarea, hanem div. (De lehetne, span, akármi más).

Valahogyan biztosan megoldható, hiszen a WYSYWIG editorokban is valami hasonló lehet, de sajnos nem tudom, azok hogyan működnek.

Valakinek van esetleg elméleti megoldása a dologra?
 
1

Nope

janoszen · 2009. Jan. 2. (P), 23.54
A WYSIWYG editorok a böngésző beépített szerkesztőmezőjét használják, nem implementálják saját maguk. Ha ilyet szeretnél, jobb, ha azon az útvonalon indulsz el.
2

Selection

Poetro · 2009. Jan. 3. (Szo), 00.31
    if (window.getSelection) { // Minden más
      selection = window.getSelection();
      range = sel.getRangeAt(0);
      alert(range.startOffset);
    }
    else { // IE4+
      range = document.selection.createRange();
      // IE alatt nem tudom innen hova tovább. 
      // Valószínűleg semmi használható megoldás nincs, 
      // hacsak az nem hogy összehasonlítasz / keresel text-ben.
    }
Persze illik ellenőrizni, hogy a kijelölés a kívánt DIV-ben történt-e.
Erre lehet használni:

    var div = document.getElementById("divneve");
    if (window.getSelection) { // minden más
      selection = window.getSelection();
      var starts = selection.anchorNode == div; // abban kezdődik
      var ends = selection.focusNode == div;   // abban fejeződik be
    }
    else { // IE4+
      range = document.selection.createRange();
      var starts = range.item(0) == div; // abban kezdődik
      var ends = range.item(range.length-1) == div;   // abban fejeződik be
    }
3

Működik!

Methos · 2009. Jan. 3. (Szo), 09.50
Köszönöm, ezzel a megoldással tényleg működik FireFox alatt, IE-re pedig majd még vadászom. :)