Чтобы использовать собственный метод для сохранения, я объявляю свою функцию сохранения в методе tinymce.init
tinyMCE.init({
// General options
mode: "none",
/* some standard init params, plugins, ui, custom styles, etc */
save_onsavecallback: saveActiveEditor,
save_oncancelcallback: cancelActiveEditor
});
Тогда я определю саму функцию
function saveActiveEditor() {
var activeEditor = tinyMCE.activeEditor;
var saveUrl = "http://my.ajax.path/saveStuff";
var idEditor = activeEditor.id;
var contentEditor = activeEditor.getContent();
/* the next line is for a custom language listbox to edit different locales */
var localeEditor = activeEditor.controlManager.get('lbLanguages').selectedValue;
$.post(saveUrl ,
{ id: idEditor, content: contentEditor, locale: localeEditor },
function(results) {
if (results.Success) {
// switch back to display instead of edit
return false;
}
else {
activeEditor.windowManager.alert('Error saving data');
return false;
}
},
'json'
);
return false;
}
Не забудьте return false
переопределить действие сохранения по умолчанию, которое отправляет ваши данные обратно на сервер.
изменить, чтобы добавить: я могу позволить пользователю изменять только один экземпляр tinymce за раз. Вы можете изменить расположение текущего экземпляра на что-то другое:)
edit # 2: TinyMce уже перехватывает привязку Ctrl + s для обработки данных. Поскольку он также очищает html и способен обрабатывать определенные правила, которые он дает при сохранении, предлагаемое мной решение состоит в том, чтобы подключить свой способ сохранения в tinyMce вместо полного переопределения привязки Ctrl + s