$ (window) .on ('beforeunload', функция () иногда не работает

0

Я использую приведенный ниже код для вкладки закрытия окна. Его работа прекрасна. но иногда не работает.

$(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!';
});
  • 0
    Пожалуйста, измените var j = "<?php echo $_SERVER["REMOTE_ADDR"];?>"; в var j = "<?php echo $_SERVER['REMOTE_ADDR'];?>";
Теги:
codeigniter

1 ответ

0

У вас есть состояние гонки. Поскольку ваш запрос AJAX находится в полете, браузер срывает страницу и принимает с собой запрос AJAX. Использование синхронного AJAX:

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

поможет в некоторых случаях (и я использовал его сам - эмпирически, он работает), но я не думаю, что здесь что-то гарантировано. Браузеры обычно устанавливают довольно жесткие ограничения на то, что можно сделать в beforeunload.

  • 0
    Я использовал сейчас. Но все еще не работает. Если я закрою вкладку в течение нескольких секунд, она будет работать, но через некоторое время событие beforeunload не будет работать.
  • 0
    Любое тело дать решение как можно скорее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню