我正在尝试使用ace编辑器中的$(window).on('beforeunload', function(){});
和editor.session.getUndoManager().isClean();
来检查用户是否对文档进行了更改但未单击“提交”按钮但由于某种原因它没有“ t work这是代码:
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 :(得分:1)
代码存在一些问题。在你的改变'事件处理程序,函数参数和局部变量都被称为Isclean
。
其次,您的' beforeunload'之前看不到Isclean
变量。事件处理程序。
答案 1 :(得分:1)
为了完成这项任务,我做了:
$(window).bind("load", function() {
editor.session.getUndoManager().markClean();
});
我正在将一些Json预加载到编辑器中,所以除非我调用editor.session.getUndoManager().markClean();
作为最后一个要加载的东西(并且它是最后要加载的东西),它总是布尔值为false。