Обнаружение закрытия событий Windows JQuery
Не могли бы вы дать мне лучший способ определить только событие закрытия окна для всех браузеров по jquery?
Я имею в виду нажатие кнопки X в браузере или window.close(), не означая F5, отправку формы,
window.location или ссылка.
Я искал много потоков, но не нашел правильный путь.
Большое спасибо за поддержку.
Ответы
Ответ 1
Не существует специального события для захвата события закрытия браузера.
Вы можете захватывать только при выгрузке текущей страницы.
Этот метод будет выполняться при обновлении/навигации по текущей странице.
Даже вычисление X Y положения события мыши не дает вам хорошего результата.
Ответ 2
Вы можете использовать:
$(window).unload(function() {
//do something
}
Unload() устарел в jQuery версии 1.8, поэтому, если вы используете jQuery > 1.8, вы можете использовать даже beforeunload вместо этого.
Событие beforeunload срабатывает всякий раз, когда пользователь покидает вашу страницу по любой причине.
$(window).bind("beforeunload", function() {
return confirm("Do you really want to close?");
})
Источник закрыть окно браузера
Для последних версий jQuery рекомендуется использовать .on() вместо .bind()
Ответ 3
Метод unload() устарел в jQuery версии 1.8.
поэтому, если вы используете версии старше 1.8
затем используйте -
$(window).unload(function(){
alert("Goodbye!");
});
и если вы используете 1,8 и выше
затем используйте -
window.onbeforeunload = function() {
return "Bye now!";
};
надеюсь, что это сработает: -)
Ответ 4
Не существует специального события для захвата события закрытия браузера. Но мы можем обнаруживать позиции браузера XY.
<script type="text/javascript">
$(document).ready(function() {
$(document).mousemove(function(e) {
if(e.pageY <= 5)
{
//this condition would occur when the user brings their cursor on address bar
//do something here
}
});
});
</script>
Ответ 5
Объединить событие mousemove и window.onbeforeunload: -
Я использовал для установки TimeOut для таблицы аудита.
$(document).ready(function () {
var checkCloseX = 0;
$(document).mousemove(function (e) {
if (e.pageY <= 5) {
checkCloseX = 1;
}
else { checkCloseX = 0; }
});
window.onbeforeunload = function (event) {
if (event) {
if (checkCloseX == 1) {
//alert('1111');
$.ajax({
type: "GET",
url: "Account/SetAuditHeaderTimeOut",
dataType: "json",
success: function (result) {
if (result != null) {
}
}
});
}
}
};
});