2012-12-12 82 views
0

我可以使用,以捕獲的CKEditor鍵下面的代碼獲得從掃描代碼鍵CKEditor的

CKEDITOR.instances.<ID of Control>.on('key', function (e) { 
       e.data.keyCode ;//Gives scan code for keys ".,/;'\" `` 
} 

e.data.keyCode或者,如果我處理「KEYUP」和「的KeyDown」事件與使用evt.data.getKey()我能獲取鑰匙的掃描碼不是charcode

需要檢測字符不掃描密鑰碼,請給我建議任何機制得到charCKEDITOR.instances.<ID of Control>.on('key',...)函數處理程序的工作方式與普通的按鍵事件處理程序機制不同。

回答

0

我不知道該字符代碼是什麼(不管是什麼我想它已經0),但這裏的代碼,可以幫助你:

CKEDITOR.replace('editor1', { 
    on: { 
     contentDom: function(evt) { 
      var editable = evt.editor.editable(); 
      editable.attachListener(editable, 'keyup', function(evt) { 
       console.log('getKey', evt.data.getKey()); 
       console.log('getKeystroke', evt.data.getKeystroke()); 
       console.log('native event', evt.data.$); 
      }); 
     } 
    } 
}); 

我假設你正在使用的CKEditor 4和代碼可能無法在CKEditor 3上工作。

我將keyup事件監聽器附加到可編輯。可編輯是主要的可編輯元素 - 在內嵌編輯器中,它是一個編輯器構建的容器,並且是框架編輯器,它是內部iframe的body

很重要的是增加對contentDom此事件偵聽器 - 它的發射每次內容DOM被加載併爲每setData調用(這麼漂亮常)之後發生的陷害編輯器。在框架編輯器setData中創建了全新的DOM,因此刪除舊DOM監聽器很重要。這是由可編輯本身處理的,但是監聽器必須附加attachListener方法。

回到問題 - 我認爲CKEditor沒有提供獲取char代碼的方法。您需要使用在evt.data.$之下的本地事件。