2

我正在尝试使 h1 标签可编辑。

我的 HTML 是

<h1 id="theh1">
    Hello how are you?
</h1>

而我的 JS 是

e = document.getElementById("theh1");
InlineEditor
    .create( e,{
        removePlugins: [ 'Heading', 'Link' ],
        toolbar: [ 'bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote' ]
      } )
      .catch( error => {
          console.error( error );
      } );

这是一个 JSFiddle:https ://jsfiddle.net/r66uhfee/3/

如果您查看源代码,您会看到h1标签p在编辑后有一个元素。如何禁用此行为?

4

1 回答 1

2

不幸的是,CKEditor 5 尚不支持此功能。允许在类似段落的根票证上启用所有类型的编辑器中描述了此功能。

但是,此功能可能很容易添加。关键的代码行在每个编辑器创建者中,如下所示:

https://github.com/ckeditor/ckeditor5-editor-classic/blob/d46af9fe4627da3f2f0b29349b1cbdabdf550637/src/classiceditor.js#L74

this.model.document.createRoot();

createRoot()方法使用其默认值调用,因此它始终创建一个调用的根$root架构配置为仅允许块(如段落和标题)。

如果您要创建一个名为 的根paragraph,那么该根将只允许其中包含文本,并且编辑器将停止创建段落:

this.model.document.createRoot( 'paragraph' );

您可能需要修复的另一件事是,在这种特殊情况下,某些功能可能依赖于在架构中paragraph被标记为限制元素,因此,在对类似段落的元素启用的特定编辑器中,它'最好这样做:

editor.model.schema.extend( 'paragraph', { isLimit: true } );

但是,我们还没有对此进行测试,也没有为它设计合适的自动解决方案,这就是票证仍然开放的原因。所以——框架应该允许这样做,但实现还没有考虑这种情况。

于 2018-03-06T12:12:11.247 回答