首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当关闭(不离开)页面时,jquery会在卸载之前吗?

当关闭(不离开)页面时,jquery会在卸载之前吗?
EN

Stack Overflow用户
提问于 2013-09-13 18:02:05
回答 6查看 247.6K关注 0票数 85

如何显示“您确定要离开该页吗?”当用户实际尝试关闭页面时(单击浏览器窗口或选项卡上的X按钮),而不是当他试图离开页面时(单击另一个链接)。

我的客户希望在用户尝试关闭页面时显示一条消息:“您确定要离开页面吗?您的购物车中仍有商品。”

不幸的是,$(window).bind('beforeunload')并不只在用户关闭页面时触发。

jQuery:

代码语言:javascript
复制
function checkCart() { 
  $.ajax({
    url : 'index.php?route=module/cart/check',
    type : 'POST',
    dataType : 'json',
    success : function (result) {
       if (result) {
        $(window).bind('beforeunload', function(){
          return 'leave?';
        });
       }
    }
  })
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-09-16 15:44:20

您可以使用JQuery执行此操作。

对于示例

代码语言:javascript
复制
<a href="your URL" id="navigate"> click here </a>

你的JQuery会是,

代码语言:javascript
复制
$(document).ready(function(){

    $('a').on('mousedown', stopNavigate);

    $('a').on('mouseleave', function () {
           $(window).on('beforeunload', function(){
                  return 'Are you sure you want to leave?';
           });
    });
});

function stopNavigate(){    
    $(window).off('beforeunload');
}

并且为了得到离开消息警报将是,

代码语言:javascript
复制
$(window).on('beforeunload', function(){
      return 'Are you sure you want to leave?';
});

$(window).on('unload', function(){

         logout();

});

这个解决方案适用于所有浏览器,我已经对其进行了测试。

票数 148
EN

Stack Overflow用户

发布于 2013-09-16 13:25:09

在Ajax中尝试使用javascript

代码语言:javascript
复制
window.onbeforeunload = function(){
  return 'Are you sure you want to leave?';
};

参考link

示例2:

代码语言:javascript
复制
document.getElementsByClassName('eStore_buy_now_button')[0].onclick = function(){
    window.btn_clicked = true;
};
window.onbeforeunload = function(){
    if(!window.btn_clicked){
        return 'You must click "Buy Now" to make payment and finish your order. If you leave now your order will be canceled.';
    }
};

在这里,它会在用户每次离开页面时发出警告,直到他单击该按钮。

演示:http://jsfiddle.net/DerekL/GSWbB/show/

票数 12
EN

Stack Overflow用户

发布于 2013-09-23 05:56:39

功劳应该放在这里:how to detect if a link was clicked when window.onbeforeunload is triggered?

基本上,该解决方案添加了一个侦听器来检测是否有链接或窗口导致了unload事件的触发。

代码语言:javascript
复制
var link_was_clicked = false;
document.addEventListener("click", function(e) {
   if (e.target.nodeName.toLowerCase() === 'a') {
      link_was_clicked = true;
   }
}, true);

window.onbeforeunload = function(e) {
    if(link_was_clicked) {
        return;
    }
    return confirm('Are you sure?');
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18783535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档