更新:我试图让 onbeforeunload 工作的页面发生了一些事情。我在布局中设置了它,除了那个页面之外的每个页面都会弹出它......所以必须有一些损坏的javascript,或者重新定义onbeforeunload的javascript文件。因为它只能定义一次
我正在开发一个 Rails 项目,我正在设置一个弹出窗口来提醒用户如果他们离开页面而不保存,他们的数据将会丢失。所以我正在使用 window.onbeforeunload
我通过将此脚本代码添加到视图文件的顶部来将其设置在一个页面上
var saving = false;
window.onbeforeunload = function(){
if(!saving)
return 'Are you sure you don\'t want to save before you leave?';
};
如果用户点击保存按钮,则保存设置为 true,这会将他们重定向到单独的页面。
当我尝试在单独的视图文件上设置完全相同的东西时,问题就出现了,它也需要相同的功能。
除非我将上面的代码放入文件中,否则根本不会弹出任何内容......在任何时候。因此,我查看了其他可用选项来设置 onbeforeunload 功能。
所以我目前将其设置为:
var saving = false;
window.onbeforeunload = displayConfirm();
function displayConfirm(){
if(!saving){
if(confirm('If you leave without saving, your changes will be lost. Press cancel to go back to save')){
confirmExit();
}
}
}
在第二页。我的问题是这里的弹出窗口与第一个实现不同。更奇怪的是,弹出窗口出现在窗口加载...而不是在窗口卸载之前。
几个小时以来,我一直在四处寻找和解决这个问题。我开始变得非常恼火,因为这应该是一个简单的补充。看看它是如何在单独的页面上设置的,并且工作正常。任何关于可能出现问题的见解,或者如果我犯了一个愚蠢的错误,将不胜感激。
谢谢,
-艾伦