2016-04-29 5 views
0

私は$(window).on('beforeunload', function(){});editor.session.getUndoManager().isClean();をaceエディタで使用して、ユーザがドキュメントに変更を加えたが送信ボタンをクリックしなかったそれはここでは動作しませんいくつかの理由は、コードです:変更が行われたかどうかを確認するために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は常に真のブール値を返します。

答えて

0

私は、このタスクを達成するために:私はロードするために最後のものとしてeditor.session.getUndoManager().markClean();と呼ばれる(そして、それは最後のものでなければならない限り、私はエディタにいくつかのJSONを事前にロードされた

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

をロードするには)、常にfalseになるブール値になります。

1

コードで問題がいくつかあります。 'change'イベントハンドラでは、関数の引数とローカル変数の両方がIscleanと呼ばれます。

第二に、Isclean変数は、あなたの「beforeunload」イベントハンドラには表示されません。

+0

それでは、どのように私は、上のbeforeunloadにローカル変数を渡すのですか? –

関連する問題