我正在使用具有DNS记录管理器的Web Hosting面板。我必须使用大量的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?';
});
答案 0 :(得分:2)
您可以在点击时删除事件处理程序:
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
作为代理父母或人们会抱怨。 ;)
答案 1 :(得分:1)
使用标志变量。点击onload然后将其设为true
$(window).on('beforeunload', function(){
if(flag != false)
return 'Are you sure you want to leave?';
});