2016-04-29 55 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? –

相关问题