2016-07-19 59 views
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

正確,它們是引導標籤。所有這些都在一個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

謝謝,這是完美的。 –

相關問題