用rangy移动到最后一个字符

时间:2015-02-25 18:40:32

标签: javascript range selection contenteditable rangy

我有一个令人满意的div,我想在当前的一个字符之后移动范围。

我目前想检查插入符号后面的字符是否是某个字符,如果是,则将插入符号放在其后

我使用此代码但不起作用

 placeCaretAfterHiddenCharacter:function(containerEl,afterCharacters) {
    var afterChar = "", sel, range, afterRange,rangeHtml;
    sel = rangy.getSelection();
    if (sel.rangeCount > 0) {
        range = sel.getRangeAt(0).cloneRange();
        var endRange = rangy.createRange();
        endRange.selectNodeContents(containerEl);
        endRange.collapse(false);

        range.setEnd(containerEl, endRange.endOffset);

        var div = this.cloneSelectionInDiv(range);
        //to get string as html as range removes the html and returns the text only
        rangeHtml = div.innerHTML;
        afterChar = rangeHtml.slice(afterCharacters-1);

        if(/[\u200B\u200C\u200D\uFEFF\u2028\u2029]/g.test(afterChar)) {
            range.setStartAfter(range.startContainer,range.startOffset);
            range.collapse(true);
            sel.addRange(range);
        }

    }
},

afterChar设置正确,但插入符号不移动。

怎么办呢?

1 个答案:

答案 0 :(得分:2)

您可以使用Rangy 1.3的TextRange module。例如,要将插入符号向前移动一个字符,您可以执行以下操作:

rangy.getSelection().move("character", 1);