2016-07-19 12 views
1

私はサポートチケットを作成して管理するウェブアプリを持っています。このように、複数のタブはブラウザ内の1ページで同時に開くことができ、各タブではCKEDITORのインスタンスです。タブは必要に応じて開閉でき、タブが閉じられると、タブ内のCKEDITORインスタンスが破棄されます。離れて全体としてのページから移動するとき破棄前のCKEDITOR checkDirty

次のコードは、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でチェックする機能です。私が見つけられないのは、「破壊」イベントを検出する方法です。

ここで助けていただければ幸いです。

+0

これらのタブはどのように管理されていますか?ちょうど明確にするために、あなたは、単一のDOM内のタブは別のブラウザのタブとページインスタンス..正しいではないという意味ですか? – charlietfl

+0

正しいですが、ブートストラップのタブです。 1つのDOM内にあり、異なるブラウザのタブではなく、異なるページインスタンス内ではありません。 –

答えて

1

あなたはそのためのCKEditorバージョンのcontentDomUnload eventを使用することができます。コンテンツのDOM構造が破壊される前に

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

イベントが発生します。

+0

ありがとう、これは完璧です。 –

関連する問題