2010-07-19 15 views
1

Salut Je veux obtenir l'index de début et de fin de la sélection par rapport au nœud parent du texte sélectionné. Je suis capable de le faire dans IE. Cependant, dans d'autres navigateurs comme Firefox, Opera, Safari et Chrome, je peux accéder à la sélection et à l'index du texte sélectionné. Mais mon exigence est d'obtenir l'index w.r.t le nœud parent et non le nœud sélectionné. Je suis dans le besoin d'une solution qui prend en charge tous les navigateurs - Firefox, Opera, Safari et ChromeJavascript + Comment obtenir l'index w.r.t le nœud parent de la sélection + Navigateurs autres que IE

if (window.getSelection) { 
        alert("Other browser");  
        sel = window.getSelection(); 

         if(sel != '') { 
       //alert(sel.anchorNode.parentNode.nodeName); 
      //alert(sel.anchorOffset); 
      //alert(sel.focusNode.parentNode.nodeName); 
      //alert(sel.focusOffset);     
} 
        }  
     else if (document.selection) { 
         txt = document.selection.createRange().text; 
         var range_all = document.body.createTextRange(); 
         if (txt!='') 
         { 
          // Finding start position 
         range = document.selection.createRange(); 
          range.collapse(true); 

         var startParentElement = range.parentElement();     

          range_all.moveToElementText(startParentElement); 
          for (var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start ++) 
           range_all.moveStart('character', 1); 
          range = document.selection.createRange(); 
          range.collapse(false); 
          range_all = document.body.createTextRange(); 

         var endParentElement = range.parentElement();     
               range_all.moveToElementText(endParentElement); 
          for (var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end ++) 
           range_all.moveStart('character', 1); 
    alert("sel_start:" + sel_start); 
         alert("sel_end:" + sel_end); 
    }} 

Répondre

1

site Quirksmode peut vous aider ici: http://www.quirksmode.org/dom/range_intro.html

Vous avez juste besoin d'apprendre à utiliser l'objet plage dans les navigateurs autres que IE.

+0

Je suis dans le besoin de deux objets de gamme - un pour la sélection et l'autre pour le document entier. Le code expliqué dans le site quirksmode aide à créer une plage pour la sélection uniquement. Pour l'ensemble du document, j'ai essayé d'utiliser window.document.createRange ou simplement document.createRange. Cependant, je récupère une valeur vide. – Radhika