2013-06-04 3 views
1

Это тесно связано с Image dialog — extend onOk, instead of total overwrite, так что я думал о другом решении:Безопасно ли подключаться к событию insertElement?

editor.on('insertElement', function (ev) 
{ 
    var element = ev.data.$; 

    if (element.tagName.toUpperCase() == 'IMG') 
    { 
     // do stuff with element 
    } 
}); 

Это отлично работает.

Проблема с этим решением, однако, заключается в том, что в CKEditor's Docs он говорит:

Внутреннее событие для выполнения вызова insertElement.

Безопасно ли полагаться на внутреннее событие?

ответ

3

Это немного рискованно полагаться на это событие, хотя я уверен, что он не будет изменен в младшем выпуске, потому что мы избегаем таких изменений.

Но он может быть изменен в будущем выпуске. Например, в CKEditor 4.0 мы были вынуждены изменить editor#insertHtml и editor#paste, нарушая их обратную совместимость. Однако editor#paste является обычным публичным событием, так что вы можете видеть - все может измениться, если нет другого, чистого пути решения какой-либо проблемы с дизайном.

Таким образом, я думаю, что вы можете положиться на это событие, но так же, как и с любой другой частью API - основной выпуск может внести некоторые необходимые изменения.

PS. Определение метода оверкайтинга onOk - лучшее решение.

Обновление: По-моему, трио событий insertXXX неправильно документировано как внутреннее. В них нет ничего внутреннего, и они очень полезны в подобных случаях. Мы, возможно, изменим их описания.

+0

Не бойтесь изменений, проект, в котором используется CK, является постоянно растущим, обновляющим. Но да, я еще раз проверю метод onOk и выберу его. OT: Любая оценка по 4.2? Наш проект действительно нуждается в поддержке ** tab ** indent, увидев, что он приближается к 4.2, но не смог найти никаких оценок. – jolt

+0

Пока ничего не установлено, но мы обязательно должны/хотим закрыть 4.2 в месяц. В настоящее время он заблокирован функцией виджета, которая является массивной. Но вы всегда можете получить патч (он готов и на проверку), применить его и создать собственный пакет CKEditor. – Reinmar

+0

PS. Обновлен мой ответ. – Reinmar

Смежные вопросы