'beforeunload'Chrome Issue

时间:2012-05-21 06:42:05

标签: javascript jquery google-chrome

我有这段简单的代码 -

$(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

6 个答案:

答案 0 :(得分:14)

返回一个字符串:

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

答案 1 :(得分:6)

尝试以下:

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

答案 2 :(得分:4)

我必须将它包含在jQuery(文档).ready中才能使它在chrome

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

          [code here]

        } 
      );

    } 
  );
</script>

答案 3 :(得分:3)

为所有浏览器试试这个: -

SELECT rpcf.place_id
FROM rel_place_custom_fields rpcf 
WHERE 
(
  (rpcf.field_id = 21 AND rpcf.field_value = 'Italy') 
  AND 
  (rpcf.field_id = 22 AND rpcf.field_value = 'XL')
)

答案 4 :(得分: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?";
 });

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

答案 5 :(得分:0)

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

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

但请先检查canIuse report,因为该方法尚未全局支持。