检查 onbeforeunload 中的 ace 编辑器以查看是否进行了更改

checking the ace editor in the onbeforeunload to see if changes were made

我正在尝试使用 ace 编辑器中的 $(window).on('beforeunload', function(){});editor.session.getUndoManager().isClean(); 来检查用户是否对文档进行了更改但没有单击提交按钮但由于某种原因它不起作用这是代码:

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 总是 returns 布尔值 true。

代码有几个问题。在您的 'change' 事件处理程序中,函数参数和局部变量都称为 Isclean.

其次,Isclean 变量对您的 'beforeunload' 事件处理程序不可见。

为了完成这个任务我做了:

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

我正在将一些 Json 预加载到编辑器中,所以除非我调用 editor.session.getUndoManager().markClean(); 作为最后加载的东西(而且它必须是最后加载的东西),它总是布尔值到 false。