Javascript .beforeunload仅处理刷新
如果有任何未保存的信息,我会在用户进入应用程序的另一个页面之前提醒他们。我正在按照的建议使用Javascript .beforeunload仅处理刷新,javascript,jquery,onbeforeunload,Javascript,Jquery,Onbeforeunload,如果有任何未保存的信息,我会在用户进入应用程序的另一个页面之前提醒他们。我正在按照的建议使用.beforeunload 但它只有在我刷新页面时才起作用,而在我单击指向站点上另一个页面的链接时则不起作用。我是否误解了如何在卸载前使用,或者我需要另一个事件侦听器 application.js //= require forms.js forms.js $(window).on('beforeunload', function () { console.log('unloading') })
.beforeunload
但它只有在我刷新页面时才起作用,而在我单击指向站点上另一个页面的链接时则不起作用。我是否误解了如何在卸载前使用,或者我需要另一个事件侦听器
application.js
//= require forms.js
forms.js
$(window).on('beforeunload', function () {
console.log('unloading')
});
beforeunload
事件的工作原理如下:
// Fires just before leaving/refreshing the page. Handler will
// be passed the event object and if a returnValue is set on the
// event, the browser will display a confirmation dialog with the
// returnValue message displayed.
window.addEventListener("beforeunload", function (evt) {
evt.returnValue = "Setting this to anything but an empty string, causes this to work!";
}, false);
例如,请参阅。当您单击链接转到另一个站点/页面时,它应该会触发。@epascarello当您转到该站点的另一个页面时,它不会触发。你有没有想过为什么?你有这样的想法,当页面导航发生时,你会保留日志?我们现在使用的是什么浏览器?@epascarello我目前使用的是chrome。很可能当你转到网站的另一个页面时,你实际上并没有转到另一个页面。您必须将此功能与通过自定义对话框处理“页面更改”的任何内容联系起来。@epascarello她没有在事件对象上设置
returnValue
。正如我的评论所指出的。它应该可以像OP那样正常工作,您可以在不使用returnValue的情况下触发内部内容。@epascarello Not true:当为returnValue事件属性分配字符串时,会出现一个对话框,要求用户确认离开页面(参见下面的示例)。如果没有提供值,事件将以静默方式处理。我可以读到:如果没有提供值,事件将以静默方式处理。“这意味着它在没有对话框的情况下运行。这并不意味着跳过其中的代码。@gwalshington请参阅此示例。