【问题标题】:TinyMCE: New line on Enter, new Paragraph on double Enter?TinyMCE:Enter 上的新行,双 Enter 上的新段落?
【发布时间】:2018-03-19 16:10:51
【问题描述】:

我正在使用TinyMCE v4

如果我在文本编辑器中按回车,看起来我按了两次回车:

这是生成的源代码:

<p>Test Line one</p>
<p>this is the next line after pressing enter</p>

如果我按 enter+shift,那么它在新行中

这就是生成的源代码:

<p>Test Line one<br />this is the next line after pressing enter</p>

是否有可能以这种方式更改编辑器,单次返回创建一个断点&lt;br&gt;,双次返回创建一个新段落&lt;p&gt; 所以简而言之,我们会改变

  • Shift + Enter => 按回车键一次
  • Enter => 按 Enter 两次

这与LibreOffice Writer 的行为相同,因此对于实际使用所见即所得编辑器的人来说是一件好事。

我发现的唯一的东西是选项forced_root_block 来交换命令,所以输入创建&lt;br&gt; 和shift+enter 创建&lt;p&gt;。然而,这对于非开发者用户来说也是非常令人困惑的,并且还有一个警告,人们应该避免这种情况:

请注意,不使用 p 元素作为根块会严重削弱 编辑器的功能。

【问题讨论】:

  • 真的感觉你已经回答了自己的问题。他们为您提供了一种方法,但警告您不要这样做。很有可能它会破坏以样式设置文本的方式构建的编辑器。您可以向他们提交请求(不要认为该项目是开源的)或寻找其他编辑器。
  • @Steve 等等他们不提供方法!我发现的选项使您可以仅使用 shift+ enter 创建&lt;p&gt;。但我想创建一个&lt;p&gt; 元素并按两次回车。那是不同的东西:)!
  • 我现在明白了。您正在寻找一种方法来扩展或希望它触发一个您可以监听并注入新功能的事件?
  • tinymce.com/docs/advanced/events 列出了不同的列表,您可能会利用这些列表来跟踪连续按了多少次输入,并且应该可以让您到达目的地。
  • 如果你能设法press enter once -&gt; add &lt;br&gt;,然后再次按回车键进一步将文本与另一个
    和另一个等分隔开,你真的需要吗,第二次返回, 删除那个
    并附加一个新的

    。简而言之:两个
    就足够了,而不是一个

标签: javascript jquery wysiwyg tinymce-4


【解决方案1】:

我正在浏览tinymce.js 文件,我想我找到了处理enter 关键事件的主要代码:

var insert$3 = function (editor, evt) {
    $_3fpic86uje5o2r2r.getAction(editor, evt).fold(function () {
        $_1esduy3wje5o2qhl.insert(editor, evt);
    }, function () {
        $_54gcs16qje5o2r1x.insert(editor, evt);
    }, $_enfhkv6je5o2ply.noop);
};

并将其替换为:

var insert$3 = function (editor, evt) {
    $_3fpic86uje5o2r2r.getAction(editor, evt).fold(function () { 
        //this seems to be where Shift + Enter was being run
    }, function () {
        if (editor.lastKeyPressed === 13)            
            $_54gcs16qje5o2r1x.insert(editor, evt);  
        else
            $_1esduy3wje5o2qhl.insert(editor, evt);  
    }, $_enfhkv6je5o2ply.noop);
};

editor.lastKeyPressed 的值来自:

init_instance_callback: function(editor) {
    editor.on('keydown', function(e) {
        editor.lastKeyPressed = e.which;
    });
}

添加上一个块作为你的初始化函数的参数,找到它here

等等:

  • Shift + Enter按回车键一次
  • Enter按 Enter 两次

我知道这有点小技巧,但我希望它能让您走上更优雅的解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2020-05-14
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多