0

で複数の単語を選択する方法window.getSelection

このコードでは、を選択するtweenen paragrapと、単語がロックされparagraphs、「間」が失われます。そして、2つの単語の両方を選択する必要があります。

または、3語を選択しても、3dd 2 spa語が選択されます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 に答える