2017-09-08 56 views
0

我有4個ckeditor實例在一個頁面上,我想在最後一個(justifybloc)設置樣式。ckeditor設置justifyblock默認情況下在一個實例沒有焦點

現在我用這個代碼:

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的,我不想要的。

我不知道其他方法來做到這一點。

謝謝。

回答

0

我解決我的問題與此解決方案

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'); 
     }); 
    } 
    } 
} 

Code pen exemple

0

您提供的代碼正如您所說的那樣工作,重點在於編輯器。此外,由於在編輯器的開頭處設置了焦點,因此它只會對齊/對齊第一個塊元素(例如段落)。如果沒有聚焦編輯器,則無法使用此命令。

然而,要實現證明/對齊只有第一個塊元素,您可以使用一個小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'); 
     } 
    } 
}); 

working 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'); 
     } 
    } 
}); 

當然你可能總是將選擇/聚焦在其他地方。

+0

謝謝您的解決方案! ('focus',function(){ evt.editor.execCommand('justifyblock'); });我使用另一個關於事件 的竅門('focus',function(){ evt.editor.execCommand('justifyblock'); }); – hydrog3n

相關問題