为了使用自定义方法进行保存,我在 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 绑定