关于窗口关闭事件的javascript

时间:2013-05-14 10:36:47

标签: javascript jquery

我目前正在检测我网站的用户是否关闭了窗口/标签或更改了网址。

我正在使用以下代码,它完美运行:

var validNavigation = false;

function endSession() {
  // Browser or broswer tab is closed
  // Do sth here ...
  alert("bye");

}

function wireUpEvents() {

  window.onbeforeunload = function() {
      if (!validNavigation) {
         endSession();
      }
  }

  // Attach the event keypress to exclude the F5 refresh
  $(document).bind('keypress', function(e) {
    if (e.keyCode == 116){
      validNavigation = true;
    }
  });

  // Attach the event click for all links in the page
  $("a").bind("click", function() {
    validNavigation = true;
  });

  // Attach the event submit for all forms in the page
  $("form").bind("submit", function() {
    validNavigation = true;
  });

  // Attach the event click for all inputs in the page
  $("input[type=submit]").bind("click", function() {
    validNavigation = true;
  });

}


$(document).ready(function() {
  wireUpEvents(); 
});

我的问题是我想将事件从警报更改为叠加层。我已经设置了隐藏的div叠加层,并将以上代码中的警报替换为:

$('.overlay').css('display','block');

现在不再有效,因为div中没有​​任何内容可以让用户留在页面上。 (用户无需单击警报中的按钮)

关于我如何解决这个问题的任何建议?

干杯,丹

1 个答案:

答案 0 :(得分:8)

窗口关闭事件将作为最后一个事件触发。因此,之后不会发生其他事件。

您可以使用带有Jquery的beforeunload事件,在屏幕上显示叠加层。

以下链接可以提供帮助:link