2009-04-24 2 views
1

Как определить слово, на котором находится курсор в IE? Я попытался с этим кодом:как я могу найти Word в том, что курсор находится

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>

Но проблема возникает, когда я установить курсор в начале и в конце TEXTAREA. он дает мне полный текст. Как я могу это исправить?

ответ

0

Я уверен, что есть лучший способ решить эту проблему, поэтому я надеюсь, что кто-то еще прольет свет в этом вопросе. Это решение использует некоторую пробную версию и ошибку для перемещения диапазона - если все так неправильно, оно возвращается к исходному состоянию.

Надеюсь, это поможет!

Вот код:

<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>