2009-04-24 6 views
1

Comment puis-je détecter le mot sur lequel se trouve le curseur dans IE? J'ai essayé avec ce code:comment puis-je trouver le mot dans lequel se trouve le curseur

window.setInterval(function() { 
 
    var range = document.selection.createRange(); 
 
    range.expand('word'); 
 
    var wort = range.text.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
 
    document.getElementById("ausgabe").innerHTML = wort; 
 
}, 100)
<textarea id="ta" rows="10" cols="40">At vero eos et accu-samus et iusto? Odio, dignissimos. ducimus qui bländitiis praeséntium voluptatèm deleniti atque corrupti quos</textarea> 
 
<p>[<span id="ausgabe"></span>]</p>

Mais le problème se produit lorsque je mets le curseur au début et à la fin de la zone de texte. ça me donne le texte complet. Comment puis-je résoudre ce problème?

Répondre

0

Je suis sûr qu'il existe une meilleure façon de résoudre ce problème, alors j'espère que quelqu'un d'autre fera également la lumière sur ce problème. Cette solution utilise un certain nombre d'essais et d'erreurs pour déplacer la portée - si les choses sont si mauvaises, il est retourné à l'état d'origine.

J'espère que cela aide!

Voici le code:

<html> 
<body> 
<script> 
    window.setInterval(
     function() { 
      var selection = document.selection; 
      var range = document.selection.createRange(); 

      var parentEl = range.parentElement(); 

      // Make a duplicate range to revert to if things go wrong. 
      range2 = range.duplicate(); 

      range.moveStart('character', 1); 
      if (range.parentElement() != parentEl) { 
       // We've left the original parent (which is bad), so revert to the original range. We're probably at the end of the textarea. 
       range = range2.duplicate(); 
      } 
      range.moveStart('word', -1); 

      // Make a new duplicate range to revert to. 
      range2 = range.duplicate(); 

      // Move the end of the range one backwards, then forward to the end of the word. 
      range.moveEnd('character', -1); 
      range.moveEnd('word', 1); 
      if (range.parentElement() != parentEl) { 
       range = range2.duplicate(); 
       while (range2.parentElement() == parentEl) { 
        range.moveEnd('character', 1); 
        range2 = range.duplicate(); 
       } 
      } 

      var wort = range.text.replace(/^\s\s*$/, '').replace(/\s\s*$/, ''); 
      document.getElementById("ausgabe").innerHTML = wort; 
     }, 100 
    ) 
</script> 

    <textarea id="ta" rows="10" cols="40">At vero eos et accu-samus et iusto? Odio, dignissimos. ducimus qui bländitiis praeséntium voluptatèm deleniti atque corrupti quos</textarea> 

<p>[<span id="ausgabe"></span>]</p> 
</body> 
</html> 
Questions connexes