2016-07-06 61 views
2

當用戶點擊我的頁面構建器中的contenteditable元素時,我觸發一個點擊事件,它會初始化一個Shared CKEditor實例。初始化Shared CKEditor後還原插入符的位置?

問題是我失去了插入符的位置,CKEditor將這個光標放到​​了文本的開頭?

我想將插入位置恢復到用戶在初始化之前單擊的位置。這主要在文本的中間。

要做到這一點,我需要兩個步驟:

  1. 獲取初始化CKEditor的
  2. 使用在CKEditor的「instanceReady」事件中的插入位置之前插入位置和指針放回。

我發現這段代碼(從here):

editor.focus(); 
var selection = editor.getSelection(); 
var range = selection.getRanges()[0]; 
var pCon = range.startContainer.getAscendant({p:2},true); //getAscendant('p',true); 
var newRange = new CKEDITOR.dom.range(range.document); 
newRange.moveToPosition(pCon, CKEDITOR.POSITION_BEFORE_START); 
newRange.select(); 

但是,當編輯器已經實例這隻作品。在我的情況下,我開始沒有編輯。

任何方法來完成這項工作?

+0

請提供一個工作示例來演示問題並寫出您想要發生的事情。 – Dekel

回答

0

你只是想初始化編輯器,所以光標位置是他們點擊開始編輯?

在啓動編輯器之前,您可以使用選擇範圍並在原始HTML中插入佔位符。

啓動編輯器後,在編輯器內容中找到佔位符,將其刪除,並將插入符號放在該位置。佔位符可以像<span class="caret-placeholder"></span>一樣簡單。

0

使用jQuery,您可以用得到的光標位置:

$('#element').prop("selectionStart"); 

本地JS是:

document.getElementById('#element').selectionStart; 

(您將需要額外的代碼,如果你要支持IE8及以下)。

在點擊事件,你需要得到CKEditor的實例:

CKEDITOR.instances 

然後你應該可以使用你的代碼來設置光標位置。