单击特定元素时不要使用beforeunload(jquery,js)

时间:2017-10-03 18:58:12

标签: javascript jquery

有人可以解释一下,如何改进我的代码,以便:

  1. 如果我点击了课程按钮,则不会调用beforeunload事件 .btn
  2. 并且,如果可能的话,不跟踪每个点击事件。
  3. 我的意思是:

    $(document).on("click", ....);
    

    这是我目前的代码。它有效,但它会阻止每个操作(closebackclick上的任何按钮等页面重新加载。

    var reload = $(document).find("[data-prevent-reload]");
    
    if(reload.data('prevent-reload')) {
      window.addEventListener('beforeunload', function (ev) {
        return ev.returnValue = 'STOP!';
      });
    }
    

1 个答案:

答案 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;
&#13;
&#13;

其他选项可能是取消绑定事件而不是布尔值。