首页  >  文章  >  web前端  >  如何在跨浏览器中一致地将插入符号放在'contenteditable”预元素中的文本末尾?

如何在跨浏览器中一致地将插入符号放在'contenteditable”预元素中的文本末尾?

Patricia Arquette
Patricia Arquette原创
2024-11-23 02:31:10803浏览
<p>How to Place the Caret at the End of Text in a `contenteditable` Pre Element Consistently Across Browsers?

跨浏览器在文本末尾设置插入符

<p>在 HTML 中,

contenteditable
元素允许用户直接在元素内编辑文本。但是,跨浏览器的换行符处理方式可能会不一致。

跨浏览器换行符差异

<p>

contenteditable
的输出元素因浏览器而异:Chrome 放置了一个
<div>
。在换行符内,Firefox 会插入
<br />>
,而 Internet Explorer 则会添加
<p>

设置文本结尾处的插入符号

<p>要在所有浏览器中将插入符号一致地定位在文本末尾,请使用以下 JavaScript函数:

function placeCaretAtEnd(el) {
    el.focus();
    if (typeof window.getSelection != "undefined"
            &amp;&amp; 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();
    }
}

用法示例

<p>要使用此函数,请将事件侦听器附加到按钮,单击该按钮时,将调用该函数以将插入符号放置在文本末尾:

$(document).ready(function()
{
    $('#insert_caret').click(function()
    {
        placeCaretAtEnd($('#content'));
    }
});

以上是如何在跨浏览器中一致地将插入符号放在'contenteditable”预元素中的文本末尾?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:The Software Development Life Cycle: A Comprehensive Overview下一篇:Why Does My jQuery Ajax Request Fire the Error Event Despite a 200 OK Status Code?

相关文章

查看更多