ckeditor在默认情况下将JustifyBlock设置在实例中而无需集中



我在一个页面上有4个ckeditor实例,我想在最后一个(Justifybloc)上设置一种样式。

现在我使用此代码:

  CKEDITOR.on('instanceReady', function(evt) {
    if (evt.editor.name != undefined) {
      if (evt.editor.name.indexOf('edit-field-body-1') > -1) {
         evt.editor.execCommand( 'justifyblock' );
      }
    }
 });

execCommand将我的textarea集中在我不想要的。

我不知道这样做的其他方法。

谢谢。

您提供的代码如您所说的,以编辑器为重点。此外,它将仅证明/对齐第一个块元素(例如段落),因为焦点设置在编辑器的开头上。不用集中编辑器就无法使用此命令。

但是,要实现仅第一个块元素的合理性/对齐,您可以使用一个小的hackish解决方案并手动设置元素样式(在某种程度上,justify插件正确识别了它):

CKEDITOR.on('instanceReady', function(evt) {
    if (evt.editor.name != undefined) {
        if (evt.editor.name.indexOf('editor1') > -1) {
            evt.editor.editable().getChild( 0 ).setStyle( 'text-align', 'justify' );
        }
    }
} );

请参阅工作codepen。

这样的解决方案具有一些缺点(例如,它假设编辑器中的第一个元素是块元素 - 在大多数情况下是正确的),但在大多数情况下应该足够。


顺便说一句,如果选择编辑器内容的事实不会打扰您,并且您想首先选择其合理/对齐整个内容(需要selectall插件),例如:

CKEDITOR.on('instanceReady', function(evt) {
    if ( evt.editor.name != undefined ) {
        if ( evt.editor.name.indexOf( 'editor1' ) > -1 ) {
            evt.editor.execCommand( 'selectAll' );
            evt.editor.execCommand( 'justifyblock' );
        }
    }
} );

当然,您可以始终在其他地方移动选择/焦点。

我解决了我的问题

CKEDITOR.on('instanceReady', function(evt) {
  if (evt.editor.name != undefined) {
    if (evt.editor.name.indexOf('edit-field-body-1') > -1) {
       evt.editor.on('focus', function() { 
         this.execCommand( 'justifyblock' ); 
       });
     }
   }
 }

代码笔典型

最新更新