Я использую приведенный ниже код для вкладки закрытия окна. Его работа прекрасна. но иногда не работает.
$(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!';
});
У вас есть состояние гонки. Поскольку ваш запрос AJAX находится в полете, браузер срывает страницу и принимает с собой запрос AJAX. Использование синхронного AJAX:
$.ajax({
async: false,
....
поможет в некоторых случаях (и я использовал его сам - эмпирически, он работает), но я не думаю, что здесь что-то гарантировано. Браузеры обычно устанавливают довольно жесткие ограничения на то, что можно сделать в beforeunload
.
var j = "<?php echo $_SERVER["REMOTE_ADDR"];?>";
вvar j = "<?php echo $_SERVER['REMOTE_ADDR'];?>";