Jquery CKeditor 4:如何检查是否处于内联编辑模式且不在休假时发出警告

Jquery CKeditor 4:如何检查是否处于内联编辑模式且不在休假时发出警告,jquery,ckeditor,Jquery,Ckeditor,当我的用户在默认的CKEditor中输入文本时,我会向他们发出警告,可能会意外地关闭窗口。但是,在新的CKEditor中编辑时,也会启用此功能 我需要检查我们是否处于“内联模式”以不输出警告。在中,我找不到isInline()方法或类似的方法,所以我想我们需要一个解决方法 我试图检查仅为内联编辑而添加的保存按钮$('.cke_按钮\uuu savebtn')。长度==0): if(typeof(CKEDITOR) !== 'undefined' && $('.cke_button

当我的用户在默认的CKEditor中输入文本时,我会向他们发出警告,可能会意外地关闭窗口。但是,在新的CKEditor中编辑时,也会启用此功能

我需要检查我们是否处于“内联模式”以不输出警告。在中,我找不到isInline()方法或类似的方法,所以我想我们需要一个解决方法

我试图检查仅为内联编辑而添加的保存按钮
$('.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请尝试更改事件!