$(window).on('beforeunload',function()有时不工作

时间:2013-11-15 06:53:22

标签: codeigniter jquery

我使用以下代码进行窗口关闭选项卡。它的工作正常。但有时候不起作用。

$(window).on('beforeunload', function() {
    var i = "<?php echo $this->uri->segment(4);?>";
    var j = "<?php echo $_SERVER["REMOTE_ADDR"];?>";
    var k = "<?php echo base_url();?>";     
    $.ajax({
                url: "<?php echo base_url().'home/gethost';?>",
                type: "POST",
                data: { id : i , ip: j },
                datatype : "html"
            });
return 'Exit Now!';
});

1 个答案:

答案 0 :(得分:0)

你有竞争条件。当您的AJAX请求正在进行中时,浏览器正在拆除页面并随之收取您的AJAX请求。使用同步AJAX:

$.ajax({
    async: false,
    ....

在某些情况下会有所帮助(我自己也使用过它 - 根据经验,它可以正常使用)但我认为保证在这里工作没有任何意义。浏览器通常会对beforeunload中可以执行的操作施加非常严格的限制。