Добавить код для прослушивателя событий для нажатия клавиши cceditor
Мне нужно добавить прослушиватель событий для нажатия клавиши после загрузки CKEditor.
Код выглядит примерно так:
CKEDITOR.instances.editor1.document.on('key', function(event) {
/* instructions */
});
Любая идея, где я могу добавить код для этого? В каком файле или каким образом?
Ответы
Ответ 1
Код для архивирования выглядит примерно так:
CKEDITOR.on('instanceCreated', function(e) {
e.editor.on('contentDom', function() {
e.editor.document.on('keyup', function(event) {
// keyup event in ckeditor
}
);
});
});
Изменить - 2014 - Поскольку этот ответ по-прежнему получает некоторые обороты, я чувствовал, что было бы справедливо указать, что он предназначен для CKEditor в версии 3.x. В версии 4.x есть событие изменения, которое будет вызывать не только ключевые события, но и после вставки, отмены, повтора и т.д.
В коде это что-то вроде этого:
CKEDITOR.on('instanceCreated', function(e) {
e.editor.on('change', function (event) {
// change event in CKEditor 4.x
});
});
Ответ 2
Вам нужно отслеживать изменения?
Я изначально использовал решение выше, но в итоге я заменил его плагин OnChange CKEditor. Это полезно в некоторых особых случаях - например, если вы добавляете ссылку с помощью панели инструментов, 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, который вы хотите отредактировать.
Ответ 3
Я тестировал некоторые предлагаемые решения, и я получил свой андерсер, когда нашел эту ссылку: 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();
});
});
Ответ 4
Если логика 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
}
});
Ответ 5
Вы добавляете этот код на свою страницу или в файл .js, включенный в вашу страницу. В этом коде нет никакой тайны.
Ответ 6
CKEDITOR.instances.editor1.on('change', function () { //Do something here.});
Этот код регистрирует любое событие изменения, включая copy-paste.