2010-08-09 7 views

Répondre

2

Je pense qu'il n'y a pas de fonctions intégrées pour obtenir la position de début et de fin du code de sélection. vous devez écrire un codage JS pour obtenir ces positions. J'ai écrit juste un code simple. Je ne suis pas sûr que ce soit utile ou non. Mais, regarde ça.

<html> 
    <head> 
     <script> 
      function GetSelectedText() 
      { 
       var fullString = "I feel there is no built-in functions for getting start and end position of selection code. you need to write some JS coding for getting these position. I've wrote just simple coding. I'm not sure whether it will be useful or not. But, check it out."; 
       if (window.getSelection) 
        {    
         var range = window.getSelection();      
         var startPosition = fullString.search(range); 
         var getPosition = range.toString(); 
         var endPosition = parseInt(getPosition.length) + parseInt(startPosition) 
         alert ("Start position : " + startPosition + " and End position : " + endPosition);   
        } 
       else 
        { 
         if (document.selection.createRange) 
         { 
          var range = document.selection.createRange(); 
          var startPosition = fullString.search(range.text); 
          var getPosition = range.text; 
          var endPosition = parseInt(getPosition.length) + parseInt(startPosition); 
          alert ("Start position : " + startPosition + " and End position : " + endPosition); 
         } 
        }  
      } 
     </script> 
    </head> 
    <body> 
     <button onclick="GetSelectedText()"> 
      Get 
     </button> 
     I feel there is no built-in functions for getting start and end position of selection code. you need to write some JS coding for getting these position. I've wrote just simple coding. I'm not sure whether it will be useful or not. But, check it out. 
    </body> 
</html> 

Pour ce codage, vous devez définir votre message texte à deux endroits. La première consiste à coder en JS

var fullString = "??"

et un autre est au message ci-dessous du corps de bouton/

+0

J'ai 0 pour les deux position de départ et de fin – Rana

+0

Désolé. J'ai corrigé quelques bugs et édité au dessus du codage. Dun oublie de suivre mes instructions. – ppshein

+0

c'est un bon début. – Rana

0

Je pense que le plus court chemin serait d'utiliser la fonction String.indexOf() de javascript. Il retourne simplement l'index de départ de la chaîne recherchée dans la chaîne la plus grande et -1 s'il n'est pas présent. L'index de fin peut être calculé en ajoutant la longueur de la sous-chaîne avec l'index de départ.

+0

qu'en est-il du texte en double? si l'utilisateur sélectionne "the", la première occurrence de indexOf pourrait ne pas être le mot sélectionné? – Rana

0

Vous ne pouvez pas obtenir de manière fiable le décalage de la sélection de l'utilisateur en termes de source HTML d'origine du document. Vous ne pouvez l'obtenir qu'en termes de nœuds et de décalages dans les nœuds. Je vous recommande de regarder la réponse suivante à une question similaire: Calculating text selection offsets in nest elements in Javascript

Questions connexes