2

我正在尝试模仿甚至在此站点上发现的功能。但它似乎不起作用。到目前为止,我正在尝试使用 jQuery 1.4.4 来做到这一点,在浏览了尽可能多的示例之后,我可以在这里找到我想出的其他形式。

$(window).bind('beforeunload', function()
{
    if(show_unsaved_warning == true)
    {
        //e.preventDefault();
        var exitBeforeSave = confirm('You have unsaved changes');
        if(exitBeforeSave == false)
        {
            return false;
        }
    }
});

这可以显示确认对话框,但无论您单击确定还是取消,页面仍会加载/重新加载。我需要像堆栈一样防止这种情况发生,所以如果对表单进行了更改,我可以提示用户保存更改以防他们忘记,或者让他们离开。我在这个等式中遗漏了什么,还是不可能?

请注意,我意识到这是一个在堆栈和其他地方的几十个论坛上被问过十几次的问题。如果我可以根据我发现的东西拼凑出一些东西,否则我不会问。我带着一个明显的重复问题来到这里,因为我目前被卡住了。

编辑我稍微更改了代码以使用确认对话框,但是,问题仍然存在,并且在 Firefox 上我实际上导致了一个 ok/cancel 对话框,在单击 ok/cancel 后,firefox 创建另一个提示离开/自己呆着。我怎样才能避免这种行为呢?

4

1 回答 1

2

为什么要使用 onbeforeunload 确认?默认情况下它会这样做。

你过时的 jQuery 版本

$(window).bind('beforeunload', function() {
    if(show_unsaved_warning == true) {
        return 'You have unsaved changes.';
    }
});

jQuery 1.7+

$(window).on('beforeunload', function() {
    if(show_unsaved_warning == true) {
        return 'You have unsaved changes.';
    }
});

jsFiddle

于 2012-12-12T04:05:22.497 回答