Javascript 在onbeforeunload中检查ace编辑器以查看是否进行了更改
我正在尝试使用Javascript 在onbeforeunload中检查ace编辑器以查看是否进行了更改,javascript,jquery,ace-editor,onbeforeunload,Javascript,Jquery,Ace Editor,Onbeforeunload,我正在尝试使用$(window.on('beforeunload',function(){})和编辑器.session.getUndoManager().isClean()在ace编辑器中,检查用户是否对文档进行了更改,但没有单击“提交”按钮,但由于某些原因,该按钮不起作用代码如下: editor.on('change', function(Isclean ) { var Isclean = editor.session.getUndoManager().isClean();
$(window.on('beforeunload',function(){})代码>和编辑器.session.getUndoManager().isClean()代码>在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。代码中有几个问题。在“change”事件处理程序中,函数参数和局部变量都被称为Isclean
其次,Isclean
变量对于“beforeunload”事件处理程序不可见。为了完成此任务,我做了以下工作:
$(window).bind("load", function() {
editor.session.getUndoManager().markClean();
});
我将一些Json预加载到编辑器中,因此除非调用editor.session.getUndoManager().markClean()
作为最后一个要加载的对象(并且必须是最后一个要加载的对象),它总是布尔值为false。那么如何在卸载之前将局部变量传递给on?