2016-09-22 29 views
0

我正在做一個筆記應用程序,它使用CKEditor's inline mode來公開動態創建的可編輯div。 (我用的CKEditor版本4.5.8。)CKEditor:逃避編輯器焦點從內聯編輯器通過JS(不需要鼠標點擊)?

當使用在線編輯器,你可以點擊你的鼠標從DIV遠離開編輯模式,這將導致以下行爲的變化:

  • div周圍的藍色高光消失
  • 閃爍的光標消失
  • 按鍵不再「鍵入」div(即編輯器現在不活動)。

但我不能想出逃生編輯如何集中(即重現上述變化),而無需用戶實際點擊鼠標。以下是我試過到目前爲止:

  • 直列編輯元素名爲jQuery的.blur():這在視覺上刪除焦點和CKEDITOR.currentInstance成爲null;但按鍵仍然會將字符添加到div,從而重新激活焦點。
  • 在內聯可編輯元素上調用Jquery .removeClass('cke_focus') - 無法看到效果。
  • 在頁面上的其他元素上調用Jquery .click().focus() - 沒有可見的效果。
  • 調用CKEDITOR.currentInstance.focusManager.blur() - 無可見效果。
  • 被稱爲CKEDITOR.currentInstance.container.fire('blur') - 沒有明顯的影響。
  • CKEDITOR.currentInstance.element.fire('blur') - 沒有明顯的效果。
  • 調用CKEDITOR.currentInstance.destroy() - 由於contenteditable="true"屬性或類似情況,編輯器自動重新初始化後會自動重新初始化。無論如何,div仍然關注焦點並繼續陷入壓力。

我要的是重新當你從行內編輯DIV點擊即可發生了什麼:重點指標消失,按鍵不再添加文本到div。任何想法我可以做到這一點?提前致謝!

+0

你檢查的答案嗎? – Dekel

+0

謝謝@Dekel,不,我沒有檢查你的答案,因爲你在我的時間夜間發佈。但是如果他們爲我工作,我會投票並接受答案,所以不必擔心我忘記了您的意見。 –

+0

肯定:)沒問題,只是想確保你有關於它的通知。謝謝! – Dekel

回答

0

訣竅是在blur與刪除所有選擇合併範圍,你目前有:

CKEDITOR.instances.editor1.on('contentDom', function() { 
    CKEDITOR.instances.editor1.document.on('keydown', function(event) { 
     if (event.data.getKey() == 27) { 
      $(CKEDITOR.currentInstance.element.$).blur(); 
      window.getSelection().removeAllRanges(); 
     } 
    }); 
}); 

和工作例如:
https://jsfiddle.net/bwuhp14s/