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
  1. if (window.getSelection) { // Minden más  
  2.   selection = window.getSelection();  
  3.   range = sel.getRangeAt(0);  
  4.   alert(range.startOffset);  
  5. }  
  6. else { // IE4+  
  7.   range = document.selection.createRange();  
  8.   // IE alatt nem tudom innen hova tovább.   
  9.   // Valószínűleg semmi használható megoldás nincs,   
  10.   // hacsak az nem hogy összehasonlítasz / keresel text-ben.  
  11. }  
Persze illik ellenőrizni, hogy a kijelölés a kívánt DIV-ben történt-e.
Erre lehet használni:
  1. var div = document.getElementById("divneve");  
  2. if (window.getSelection) { // minden más  
  3.   selection = window.getSelection();  
  4.   var starts = selection.anchorNode == div; // abban kezdődik  
  5.   var ends = selection.focusNode == div;   // abban fejeződik be  
  6. }  
  7. else { // IE4+  
  8.   range = document.selection.createRange();  
  9.   var starts = range.item(0) == div; // abban kezdődik  
  10.   var ends = range.item(range.length-1) == div;   // abban fejeződik be  
  11. }  
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. :)