contentEditable areas ::强制新行的段落 - 跨浏览器

时间:2012-06-02 12:31:17

标签: newline contenteditable paragraph execcommand

Firefox使用<br>打破新行,Chrome和Safari正在打破<div>...</div>,而Internet Explorer和Opera正在使用段落<p>...</p>作为新行。

我正在寻找一种方法来强制每个浏览器在打破新行时只创建段落。

我知道ckeditor支持此功能,但我怎样才能在自定义编辑器中实现它?

4 个答案:

答案 0 :(得分:4)

对我来说,是将document.execCommand('formatBlock', false, 'p');添加到contenteditable div中的keypress事件的解决方案。例如:

element.addEventListener('keypress', function(ev){
    if(ev.keyCode == '13')
        document.execCommand('formatBlock', false, 'p');
}, false);

希望它会帮助某人。 :)

答案 1 :(得分:2)

如果您希望在中断新行之后添加新的<p>,但您希望保持上一行的格式(即,您要从<h1>中断),结合@MorganTiley和@PageOnline的答案:

editor.addEventListener('keypress', function(e){
    if(e.keyCode == '13') {
      e.preventDefault();
      document.execCommand('insertParagraph', false);
      document.execCommand('formatBlock', false, 'p');
    }
  }, false);

答案 2 :(得分:1)

尝试使用execCommand“insertparagraph”,例如:

document.execCommand('insertParagraph',false,'id for new p')

或者你可以处理keydown事件,捕获keycode 13(没有修饰符),然后做你喜欢的任何事情。

<强>校正的

答案 3 :(得分:-4)

你并不具备你想要这个功能的编辑器,但你提到CKEditor所以我假设你在询问它。只需将其添加到config.js文件中:

config.enterMode = CKEDITOR.ENTER_P;