Я хотел бы определить, когда страница закрывается, и через 10 секунд используйте php для вызова URL. Поскольку php на стороне сервера, я думаю, что в отличие от JS, он будет вызывать URL независимо от того, активна страница или нет.
URL для звонка: http://postback.com/?id=xx
После того, как вы закроете страницу, вы не сможете ничего сделать с пользователем.
Используйте Cron Job вместе с Ajax-вызовами.
Ajax отправляет на сервер, если он все еще в сети. Сохраните метку времени в базе данных вместе с уникальным идентификатором для идентификации браузера.
Запускайте Cron Job каждую секунду или две. Убедитесь, что отметка времени в базе данных старше 10 секунд. Если это так, используйте cUrl для вызова вашего URL
Псевдокод:
[js]
setInterval(
function () {
$.post('keepAlive.php?id='+$('#uid').val()),
}
4000
);
[PHP | keepAlive]
$db->insertOrUpdate($_GET['id'], time());
[PHP | cron]
$alive = $db->query('SELECT * FROM alive WHERE `time` < '.time());
foreach ($alive as $data) {
$this->sendCurl($data);
}
В браузерах нет события close, возможно, по соображениям безопасности.
Эта почта предлагает использовать дочернее окно для управления процессом закрытия.
Таким образом, в родительском окне поместите следующий код:
var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');
var timer = setInterval(function() {
if(win.closed) {
clearInterval(timer);
setTimeout (function () {$.get( "http://postback.com/?id=xx" );}, 10000);
}
}, 1000);
Этот код не был проверен мной.