我正在开发一个具有 DNS 记录管理器的虚拟主机面板。我必须使用大量 JavaScript 才能使它的性能几乎像桌面应用程序。
我真的很想在浏览器运行 beforeunload
时显示自定义对话框窗口,但是经过一些研究后我发现我无法使用浏览器的默认对话框窗口。
所以下面这段 JavaScript 代码就是这样做的,我的问题是我需要确保它不会在某些链接点击时被触发。
我希望能够维护一个 CSS 类名数组,如果单击的链接在这个数组中,那么它将不会显示 onunload 事件。
我相信这对 JavaScript 开发人员来说很容易。谁能告诉我该怎么做?
//sample Class array
safeLinks = ['test', 'test2', 'test3', 'test4', 'test5'];
// onunload event
$(window).on('beforeunload', function(){
return 'Are you sure you want to leave?';
});
最佳答案
您可以在单击时删除事件处理程序:
var safeLinks = ['.test', '.test2', '.test3', '.test4', '.test5'];
function promptBeforeClose() {
return 'Are you sure you want to leave?';
}
$(window).on('beforeunload', promptBeforeClose);
$(document).on('click', safeLinks.join(', '), function(e) {
$(window).off('beforeunload', promptBeforeClose);
});
此外,如果这些安全链接有一个共同的祖先,请使用它而不是 document
作为委托(delegate) parent ,否则人们会提示。 ;)
关于javascript - 在某些链接上禁用浏览器 onUnload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116230/