У меня есть одна страница php, подобная этой
<script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> window.onbeforeunload = saveBeforeExit; function saveBeforeExit() { jQuery.ajax({ url:"truncate_logs.php", type:"GET", async:false, success:function(data){ } }) } </script> //I am creating 'logs_".$t.".xls' here <?php header("Location: log_files/logs_".$t.".xls"); ?>
Моя проблема здесь
Местоположение: onbeforeunload не вызван.
onbeforeunload не работает, потому что он неправильно закодирован. Вам нужно вернуть строку из onbeforeunload, которая будет использоваться как сообщение в появившемся окне.
Я нашел ответ. Добавьте async: false в запрос jQuery ajax.
См. Как я могу получить jQuery для выполнения синхронного, а не асинхронного запроса Ajax?
У меня была та же проблема, и я решил:
window.onbeforeunload = function (e) { var e = e || window.event; // For IE and Firefox if (e) { e.returnValue = ''; } // For Chrome and Safari return ''; };
Однако Opera, похоже, не поймает onbeforeunload событие, так плохо!
Вероятно, ваше назначение на событие происходит слишком рано (страница не готова).
Пожалуйста попробуйте:
$(document).ready(function() { window.onbeforeunload = saveBeforeExit; });