javascript - 在某些链接上禁用浏览器 onUnload?

标签 javascript jquery callback onunload

我正在开发一个具有 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/

相关文章:

javascript - Highcharts - 在不使用 RGBA 的情况下更改系列的默认不透明度?

jquery - jcarousel 或任何其他类似的图像 slider

javascript - 为什么模态不显示?

javascript - 是否可以通过回调函数访问函数内的属性?

javascript - 在同一页面上将滚动方向从垂直更改为水平

javascript - 我已将背景颜色设置为白色,但父元素的不透明度如何影响它?

php - JavaScript OnMouseOver 解析错误 : syntax error, 意外 T_STRING

javascript - 在不知道 javascript 中的标签 ID 的情况下,如何通过 javascript 函数设置标签文本

javascript - require.js 有时不触发回调函数

javascript - 使用回调在数组上执行函数