加載CKEditor後,我需要爲keypress添加一個事件監聽器。 的代碼是一樣的東西:
爲ckeditor中的按鍵添加事件監聽器的代碼
CKEDITOR.instances.editor1.document.on('key', function(event) {
/* instructions */
});
任何想法我在哪裏可以添加代碼是什麼?在哪個文件或以什麼方式?
加載CKEditor後,我需要爲keypress添加一個事件監聽器。 的代碼是一樣的東西:
爲ckeditor中的按鍵添加事件監聽器的代碼
CKEDITOR.instances.editor1.document.on('key', function(event) {
/* instructions */
});
任何想法我在哪裏可以添加代碼是什麼?在哪個文件或以什麼方式?
代碼歸檔是這樣的:
CKEDITOR.on('instanceCreated', function(e) {
e.editor.on('contentDom', function() {
e.editor.document.on('keyup', function(event) {
// keyup event in ckeditor
}
);
});
});
編輯 - 2014 - 因爲這個答案還是得到了一些upvotes,我認爲這將是公平地指出,這是在意味着CKEditor的版本3.x.隨着4.x版本有變化的情況下,這將引發不僅在關鍵事件,而且粘貼後,撤消,重做等
在它的代碼是這樣的:
CKEDITOR.on('instanceCreated', function(e) {
e.editor.on('change', function (event) {
// change event in CKEditor 4.x
});
});
您可以將該代碼添加到您的頁面或頁面中包含的.js文件中。該代碼沒有神祕感。
不,不工作這樣... :( – ghostCoder 2011-06-19 17:38:53
這是很久以前的事,但我認爲下跌是不公平的,並且「撤消」其中的一個,問題在於代碼的放置位置,而不是代碼本身,除了頁面上包含的js文件或頁面上的js以外,還可以將任何ckEditor js代碼?我同意,雖然答案有點簡潔,但並不特別有幫助。我還注意到@Gabriel在他的回答中引用了同一作者的一篇文章(沒有提到代碼的放置位置)。 – 2014-11-07 10:28:54
你需要跟蹤更改?
我最初使用上面的解決方案,但我最終將其替換爲OnChange CKEditor plugin。這在一些特殊情況下非常有用 - 例如,如果使用工具欄添加鏈接,keypress將不會註冊任何內容。
下面是一個代碼示例,更新爲使用instanceCreated(第一次安裝的OnChange):
CKEDITOR.on('instanceCreated', function(e) {
if (e.editor.name === editorId) { //editorId is the id of the textarea
e.editor.on('change', function(evt) {
//Text change code
});
}
});
更新:根據上面的答案,CKEditor的現在有一個內置的變化情況,所以你不必再安裝插件以使用此解決方案。您仍然可以使用第二行代碼將更改應用到要編輯的CKEditor實例。
我已經測試了一些在這裏提出的解決方案中,我得到了我的anwser當我發現這個鏈接:http://alfonsoml.blogspot.com.br/2011/03/onchange-event-for-ckeditor.html
下面的代碼工作就像一個魅力:
editor.on('contentDom', function()
{
editor.document.on('keydown', function(event)
{
if (!event.data.$.ctrlKey && !event.data.$.metaKey)
somethingChanged();
});
});
CKEDITOR.instances.editor1.on('change', function() { //Do something here.});
此代碼註冊任何更改事件,包括複製粘貼。
如果KEYDOWN邏輯是有道理的,一個給定的插件,可以將其包含在插件的定義:
CKEDITOR.plugins.add('customPlugin', {
// definition keys...
init: function(editor) {
// Plugin logic
...
// Register a keydown event handler -- http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-key
editor.on('key', function(event) {
console.log('CKEDITOR keydown event from customPlugin'); // successfully captures keydown when registered from plugin
}
});
謝謝一個十億美元工作出色。 – ghostCoder 2011-06-20 12:59:42
這會附加到CKEDITOR創建的每個實例嗎? – Chris 2011-09-08 19:01:11