【问题标题】:how can I find the Word in that the cursor is located我怎样才能找到光标所在的单词
【发布时间】:2009-04-24 23:55:01
【问题描述】:

如何在 IE 中检测光标所在的单词? 我试过这段代码:

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 的开头和结尾时,就会出现问题。它给了我完整的文本。我该如何解决?

【问题讨论】:

    标签: javascript textarea cursor


    【解决方案1】:

    我确信有更好的方法来解决这个问题,所以我希望其他人也能对这个问题有所了解。此解决方案使用一些试验和错误来移动范围 - 如果出现错误,则将其恢复为原始状态。

    我希望这会有所帮助!

    代码如下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2012-11-20
      • 2020-02-18
      • 2017-04-18
      相关资源
      最近更新 更多