2009-04-24 7 views
1

Wie kann ich das Wort finden, auf dem der Cursor in IE befindet? Ich habe mit diesem Code versucht:Wie kann ich das Wort finden, in dem sich der Cursor befindet

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>

Aber das Problem tritt auf, wenn ich die Cursor am Anfang und am Ende des Textarea eingestellt. es gibt mir den vollständigen Text. Wie kann ich das beheben?

Antwort

0

Ich bin mir sicher, es gibt einen besseren Weg, dies zu lösen, also hoffe ich, dass jemand anderes auch dieses Problem beleuchten wird. Diese Lösung verwendet etwas Versuch und Irrtum, um den Bereich zu verschieben - wenn es so falsch ist, wird es in den ursprünglichen Zustand zurückgesetzt.

Ich hoffe, das hilft! Hier

ist der 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> 
Verwandte Themen