Javascript 防止页面卸载、失败。思想?
我试图模仿这个网站上的一个功能。但它似乎不起作用。我尝试用jquery1.4.4来实现这一点,在浏览了这里和我想到的其他表单上的尽可能多的示例之后Javascript 防止页面卸载、失败。思想?,javascript,jquery,Javascript,Jquery,我试图模仿这个网站上的一个功能。但它似乎不起作用。我尝试用jquery1.4.4来实现这一点,在浏览了这里和我想到的其他表单上的尽可能多的示例之后 $(window).bind('beforeunload', function() { if(show_unsaved_warning == true) { //e.preventDefault(); var exitBeforeSave = confirm('You have unsaved chan
$(window).bind('beforeunload', function()
{
if(show_unsaved_warning == true)
{
//e.preventDefault();
var exitBeforeSave = confirm('You have unsaved changes');
if(exitBeforeSave == false)
{
return false;
}
}
});
此时将显示确认对话框,但无论单击“确定”还是“取消”,页面仍会加载/重新加载。我需要像stack那样防止这种情况,因此如果表单上有更改,我可以提示用户保存更改,以防他们忘记,或者让他们离开。在这个等式中,我是否遗漏了什么,或者说这是不可能的
请注意,我意识到这是一个在stack和其他几十个论坛上被问了十几次的问题。如果我能根据我发现的东西把东西拼凑起来,否则我就不会问了。我带着一个明显的重复问题来到这里,因为我现在被卡住了
编辑我稍微修改了代码以使用确认对话框,但是,问题仍然存在,在firefox上,我实际上导致了一个ok/cancel对话框,单击ok/cancel后,firefox会创建另一个单独离开/停留的提示。我怎样才能避免这种行为呢?为什么要在onbeforeunload中使用confirm?默认情况下它会这样做 您过时的jQuery版本
$(window).bind('beforeunload', function() {
if(show_unsaved_warning == true) {
return 'You have unsaved changes.';
}
});
jquery1.7+
$(window).on('beforeunload', function() {
if(show_unsaved_warning == true) {
return 'You have unsaved changes.';
}
});
不幸的是,在我的公司为我的全面重建开绿灯之前,我一直坚持使用jquery 1.4.4,我一直试图引入一个独立的新版本,并使用noconflict,该软件打破了原始作者的思路,将混乱的代码放在一起。。无论如何,你过时的方式说明我失败了,它的工作,但仍然继续加载下一页或重新加载,因为我尝试之前的想法,确认当你点击取消下一页不应加载。你是说它仍然加载?
if(show\u unsaved\u warning==true)
最好写成if(show\u unsaved\u warning)
。类似地,if(exitBeforeSave==false)
最好写成if(!exitBeforeSave)
。我知道这是一个小问题,比较布尔变量和真/假总是让我恼火。此外,在同一个函数中,将camelcase与下划线混合使用是在非类型化语言中失去理智的最可靠方法。(它是在保存之前退出还是在保存之前退出???直到运行时您才知道)。