您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

内容可编辑,在文本末尾设置插入符号(跨浏览器)

内容可编辑,在文本末尾设置插入符号(跨浏览器)

以下功能将在所有主流浏览器中实现:

function placeCaretAtEnd(el) {

    el.focus();

    if (typeof window.getSelection != "undefined"

            && typeof document.createRange != "undefined") {

        var range = document.createRange();

        range.selectNodeContents(el);

        range.collapse(false);

        var sel = window.getSelection();

        sel.removeAllRanges();

        sel.addRange(range);

    } else if (typeof document.body.createTextRange != "undefined") {

        var textRange = document.body.createTextRange();

        textRange.movetoElementText(el);

        textRange.collapse(false);

        textRange.select();

    }

}



placeCaretAtEnd( document.querySelector('p') );


p{ padding:.5em; border:1px solid black; }


<p contentEditable>foo bar </p>

在开始时将插入符几乎相同:只需要更改传递给的调用中的布尔值即可collapse()。这是一个示例,该示例创建用于将插入号放在开头和结尾的函数

function createCaretPlacer(atStart) {
    return function(el) {
        el.focus();
        if (typeof window.getSelection != "undefined"
                && typeof document.createRange != "undefined") {
            var range = document.createRange();
            range.selectNodeContents(el);
            range.collapse(atStart);
            var sel = window.getSelection();
            sel.removeAllRanges();
            sel.addRange(range);
        } else if (typeof document.body.createTextRange != "undefined") {
            var textRange = document.body.createTextRange();
            textRange.movetoElementText(el);
            textRange.collapse(atStart);
            textRange.select();
        }
    };
}

var placeCaretAtStart = createCaretPlacer(true);
var placeCaretAtEnd = createCaretPlacer(false);
其他 2022/1/1 18:16:40 有517人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶