有人可以解释一下,如何改进我的代码,以便:
beforeunload
事件
.btn
? 我的意思是:
$(document).on("click", ....);
这是我目前的代码。它有效,但它会阻止每个操作(close
,back
,click
上的任何按钮等页面重新加载。
var reload = $(document).find("[data-prevent-reload]");
if(reload.data('prevent-reload')) {
window.addEventListener('beforeunload', function (ev) {
return ev.returnValue = 'STOP!';
});
}
答案 0 :(得分:-1)
没有任何事件会告诉您是什么触发了它,因此您无法收听点击事件。它通常用布尔值完成并在调用它之前检查它。
var ignoreUnload
$(document).on("click", ".btn", function () {
ignoreUnload = true
});
window.addEventListener('beforeunload', function (ev) {
if(!ignoreUnload) return ev.returnValue = 'STOP!';
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="btn" href="https://example.com">btn</a>
<a class="" href="https://example.com">not</a>
&#13;
其他选项可能是取消绑定事件而不是布尔值。