'beforeunload'Chrome Issue

问题描述 投票:15回答:6

我有这段简单的代码 -

$(window).bind('beforeunload', function(){
    alert("Good Bye")
});

适用于Firefox,IE8但不适用于Chrome。这是一个已知问题还是有其他替代方案?

实际上我想要做的是在用户试图关闭浏览器时记录细节。

function LogTime()
{
    jQuery.ajax({
      type: "POST",
      url: "log.php",
      data: "",
      cache: false,
      success: function(response)
      {
      }
    );
}

$(window).bind('beforeunload', function(){
    LogTime();
});

这适用于Firefox,但不适用于Chrome

javascript jquery google-chrome
6个回答
14
投票

返回一个字符串:

$(window).on('beforeunload', function(){
    return "Good bye";
});​

6
投票

试试以下:

$(window).on('beforeunload', function(){
  return "Good Bye";
});

4
投票

我不得不将它包含在jQuery(文档).ready中以使其在chrome中运行

<script>
  jQuery(document).ready( 
    function () { 
      jQuery(window).bind('beforeunload',  
        function (e) {  

          [code here]

        } 
      );

    } 
  );
</script>

3
投票

试试这个浏览器: -

window.addEventListener("beforeunload", function (e) {

  var confirmationMessage = "\o/";     
  e.returnValue = confirmationMessage;           
  return confirmationMessage;       

});

2
投票

试试这个:

function LogTime(){

jQuery.ajax({
  type: "POST",
  url: "log.php",
  data: "",
  cache: false,
  success: function(response){

  }
});

}

 $(window).bind('beforeunload', function(){
     LogTime();
     return "You're leaving?";
 });

似乎只要在函数体的末尾返回此事件的字符串,就可以在该字符串之前运行代码。


0
投票

如果您需要在卸载文档之前发送一些分析数据,请选择navigator.sendBeacon()方法而不是XMLHttpRequest。

sendBeacon()方法旨在执行少量数据的非阻塞发送。

但首先检查canIuse report,因为该方法尚未在全球范围内得到支持。

© www.soinside.com 2019 - 2024. All rights reserved.