0

如何在window.getSelection.

在这段代码中,如果我选择tweenen paragrap,它将锁定单词paragraphs和错过`之间。我需要选择两个词。

甚至我选择 3 个词dd 2 spa,它也会选择 3 个词add 2 spaces。谢谢。

<script type="text/javascript">
    function Selected() {
        var sel;
        if ((window.getSelection) && (sel = window.getSelection()).modify) {
            sel = window.getSelection();
            if (!sel.isCollapsed) {
                sel.modify("move", "backward", "word");
                sel.modify("extend", "forward", "word");
            }
        }
    }
</script>
<p>put returns between paragraphs, for linebreak add 2 spaces at end</p>
<input type="button" onclick="Selected();" value="selected">
4

1 回答 1

1

如果我理解正确,您希望按钮将选择捕捉到整个单词。如果是这样,您可以这样做:

现场演示:http: //jsfiddle.net/uCHVQ/1/

代码:

function Selected() {
    var sel;
    if ((window.getSelection) && (sel = window.getSelection()).modify) {
        sel = window.getSelection();
        if (!sel.isCollapsed) {

            // Detect if selection is backwards
            var range = document.createRange();
            range.setStart(sel.anchorNode, sel.anchorOffset);
            range.setEnd(sel.focusNode, sel.focusOffset);
            var backwards = range.collapsed;
            range.detach();

            // modify() works on the focus of the selection
            var endNode = sel.focusNode, endOffset = sel.focusOffset;
            sel.collapse(sel.anchorNode, sel.anchorOffset);
            if (backwards) {
                sel.modify("move", "forward", "word");
                sel.extend(endNode, endOffset);
                sel.modify("extend", "backward", "word");

            } else {
                sel.modify("move", "backward", "word");
                sel.extend(endNode, endOffset);
                sel.modify("extend", "forward", "word");
            }
        }
    }
}

(顺便说一句,该代码最初来自我发布的内容吗?看起来很熟悉,但我找不到)。

于 2011-09-25T23:50:55.787 回答