2009-04-24 13 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>
しかし、私はテキストエリアの最初と最後にカーソルを設定する際に問題が発生しました。それは私に完全なテキストを与える。どうすれば修正できますか?

答えて

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> 
関連する問題