在 contenteditable div 中的 Enter 键上插入换行符

Fir*_*Dib 5 html javascript css jquery contenteditable

当我在可编辑的 div 中按 Enter 键时,我试图插入一个换行符,而不是浏览器想要插入的任何内容。

我当前的代码如下所示:

if (e.which === 13) {
        e.stopPropagation();
        e.preventDefault();

        var selection = window.getSelection(),
            range = selection.getRangeAt(0),
            newline = document.createTextNode('\n');

        range.deleteContents();
        range.insertNode(newline);
        range.setStartAfter(newline);
        range.setEndAfter(newline);
        range.collapse(false);
        selection.removeAllRanges();
        selection.addRange(range);
    }
Run Code Online (Sandbox Code Playgroud)

这似乎在 Chrome、Firefox 和 Safari 中有效,但在 Internet Explorer 中失败。

我的要求是它适用于最新版本的 Chrome/FF 和类似版本(几个版本也不错)和 IE10+。

我尝试了很多不同的东西,但似乎无法让它发挥作用。

任何帮助深表感谢!

编辑:为了澄清,我在 IE 中的错误是插入换行符时插入符不会移动,而是换行符似乎是在插入符之后添加的,这是奇怪的行为。但是,如果我按 Enter 一,然后使用箭头键向下移动到该行,然后再次开始按 Enter,它就会按预期工作。不能告诉我在这里做错了什么。

JBe*_*een 5

尝试这个:

document.execCommand('insertHTML', false, '<br><br>');
Run Code Online (Sandbox Code Playgroud)

甚至撤消\重做工作:)


wri*_*wan -1

像这样的东西?

if(e.which==13){
    e.preventDefault();
    $('#divID').html($('#divID').text()+"<br />");
}
Run Code Online (Sandbox Code Playgroud)

  • 这并不能解决问题。需要将其插入到插入符号的位置。 (2认同)