CKEDITOR 在销毁前检查脏

CKEDITOR checkDirty before Destroy

我有创建和管理支持工单的网络应用程序。因此,可以在浏览器的单个页面上一次打开多个选项卡,并且每个选项卡中都是 CKEDITOR 的一个实例。可以根据需要打开和关闭选项卡,当关闭选项卡时,选项卡中的任何CKEditor实例都会被破坏。

下面的代码允许在离开整个页面时检查任何 CKEDITOR 实例中的更改:

function beforeUnload( evt ) {
    for ( var name in CKEDITOR.instances ) {
        if ( CKEDITOR.instances[ name ].checkDirty() )
            return evt.returnValue = "You will lose the changes made in the editor.";
    }
}
if ( window.addEventListener ) {
    window.addEventListener( "beforeunload", beforeUnload, false );
} else {
    window.attachEvent( "onbeforeunload", beforeUnload );
}

这很好用,但是,如果关闭包含 CKEDITOR 实例的页面上的选项卡,我想在销毁 CKEDITOR 实例之前执行 checkDirty。

我正在寻找的是能够检测 CKEDITOR 实例上的 'destroy' 事件,然后使用 checkDirty 检查该实例。我找不到的是检测 'destroy' 事件的方法。

如有任何帮助,将不胜感激。

您可以为此使用 CKEditor 的 contentDomUnload event

for (var name in CKEDITOR.instances) {
    CKEDITOR.instances[name].on('contentDomUnload', function() {
        // Do here whatever you need
        if (this.checkDirty()) {
            // The instance is dirty
        }
    });
}

事件在内容 DOM 结构被销毁之前触发。