Jquery CKeditor 4:如何检查是否处于内联编辑模式且不在休假时发出警告
当我的用户在默认的CKEditor中输入文本时,我会向他们发出警告,可能会意外地关闭窗口。但是,在新的CKEditor中编辑时,也会启用此功能 我需要检查我们是否处于“内联模式”以不输出警告。在中,我找不到isInline()方法或类似的方法,所以我想我们需要一个解决方法 我试图检查仅为内联编辑而添加的保存按钮Jquery CKeditor 4:如何检查是否处于内联编辑模式且不在休假时发出警告,jquery,ckeditor,Jquery,Ckeditor,当我的用户在默认的CKEditor中输入文本时,我会向他们发出警告,可能会意外地关闭窗口。但是,在新的CKEditor中编辑时,也会启用此功能 我需要检查我们是否处于“内联模式”以不输出警告。在中,我找不到isInline()方法或类似的方法,所以我想我们需要一个解决方法 我试图检查仅为内联编辑而添加的保存按钮$('.cke_按钮\uuu savebtn')。长度==0): if(typeof(CKEDITOR) !== 'undefined' && $('.cke_button
$('.cke_按钮\uuu savebtn')。长度==0)
:
if(typeof(CKEDITOR) !== 'undefined' && $('.cke_button__savebtn').length==0) {
var warn_on_leave = false;
CKEDITOR.on('currentInstance', function() {
try {
CKEDITOR.currentInstance.on('key', function() {
warn_on_leave = true;
});
} catch (err) { }
});
$("input:submit").click( function() {
warn_on_leave = false;
return true;
});
// show popup
$(window).bind('beforeunload', function() {
if(warn_on_leave) {
return 'Your text was not saved. All your text gets lost.';
}
});
}
但奇怪的是,它并不总是起作用
然后我想我可以使用JQuery检查contenteditable
是否存在:
,但是对于编辑器字段,我的ID不是常量。嗯。。我可以使用Jquery在整个文档中查找可编辑的内容
您将如何直接解决此问题?您可以使用
您可以枚举使用CKEDITOR.instances实例化的编辑器
CKEDITORCUSTOM.closeWarning = function () {
for (var i in CKEDITOR.instances) {
if (CKEDITOR.instances[i].editable().isInline() === false) {
return 'Your text was not saved. All your text gets lost.';
}
}
//return null; do not return anything is better becouse IE become mad
};
window.onbeforeunload = CKEDITORCUSTOM.closeWarning;
建议:如果需要获取未保存的更改,则应使用CKEditor 4.2之前的插件:
从4.2中嵌入:
谢谢您的快速回答。我刚刚在try-catch块中添加了一行:try{if(!CKEDITOR.currentInstance.editable().isInline()){CKEDITOR.currentInstance.on('key',function(){warn_on_leave=true;});}}}catch(err){}
,这似乎有效。如果更多的测试显示出问题,我会报告。thx。@EchtEinfachTV:D请尝试更改事件!