【问题标题】:Move to the end one character with rangy用 rangy 移动到最后一个字符
【发布时间】:2015-04-27 22:06:49
【问题描述】:

我有一个内容可编辑的 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 设置正确,但插入符号没有移动。

如何做到这一点?

【问题讨论】:

    标签: javascript range selection contenteditable rangy


    【解决方案1】:

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

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

    【讨论】:

    • 我看到它处于测试阶段,使用稳定吗?
    • 我会说它相当稳定。没有严重的已知错误,并且代码已经存在了几年。完整发布之前的大部分未完成工作是更新演示页面和文档。
    • 谢谢!!!我已经讨论这个问题好几天了,非常感谢 Rangy 的工作
    猜你喜欢
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2013-10-21
    • 1970-01-01
    • 2011-01-08
    • 2014-06-11
    相关资源
    最近更新 更多