2016-04-29 89 views
0

我試圖在ace編輯器中使用$(window).on('beforeunload', function(){});editor.session.getUndoManager().isClean();來檢查用戶是否更改了文檔,但沒有單擊提交按鈕,而是由於某種原因,這是行不通的下面的代碼:檢查onbeforeunload中的ace編輯器以查看是否進行了更改

editor.on('change', function(Isclean) { 
     var Isclean = editor.session.getUndoManager().isClean(); 
    }); 
var submitting = false; 

$(window).on('beforeunload', function(){ 
    if (submitting == false && Isclean == false) { 
      return "You have made some changes in the editor."; 
    }; 
}); 

但無論出於何種原因Isclean總是返回true一個布爾值。

回答

0

爲了完成這個任務,我所做的:

$(window).bind("load", function() { 
    editor.session.getUndoManager().markClean(); 
}); 

我預加載一些JSON轉換成編輯器等等,除非我打電話editor.session.getUndoManager().markClean();的最後一件事加載(它已經是過去的事情加載),它總是布爾值爲false。

1

代碼有幾個問題。在'change'事件處理函數中,函數參數和局部變量都被稱爲Isclean

其次,Isclean變量對'beforeunload'事件處理程序不可見。

+0

那麼如何將本地變量傳遞給beforeunload? –

相關問題