Div contenteditable在Firefox中按下“enter”的作用

3

我有一个添加了 contenteditable 属性的 div 元素,需要在按下“Enter”键时插入换行符 < br />。 在IE浏览器中一切正常,但是Firefox让我发疯。

this.e.keydown(function(event) {
  if(event.keyCode == 13) {
    var execute = editor.insertHTML(\'<br />\')';
    eval(execute);
    return false;
  } 
});

Firefox忽略位于div结尾(以及开头)的<br />标签。也就是说,如果我在句子中间按“enter”,它会像应该的那样工作。但如果在句子结尾(最后一句话)按下“enter”,它将失败。有什么想法吗?stackoverflow编辑器预览也有同样的问题 :-) 在结尾处按下“enter”>失败...在单个字母之前按下“enter”>换行。

1
同样的问题:https://dev59.com/6HA75IYBdhLWcg3w1sv2 - Thom
"insertHTML('<br />&nbsp')';可以暂时解决问题,但会导致不美观的 nbsp..." - Thom
请查看我对https://dev59.com/6HA75IYBdhLWcg3w1sv2的回答。 - Jake McGraw
3个回答

1
请添加此函数。
this.e.keydown(function(event) {
    if (event.keyCode == 13 || event.charCode == 13) {
        var execute = editor.insertHTML(\'<br />\')';
        eval(execute);
        return false;
    } 
});

FF 读取的是 charCode 而不是 keyCode。


0

0
你可以尝试插入<br /><span></span>。这会将光标移动到下一行,但不会正确调整容器的大小,因此效果并不完美。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接