окно.onbeforeunload и окна.onunload не работает в Firefox, Safari, Opera?
в мой чат-приложение, мне нужно получить подтверждение от пользователя , когда мое приложение закрывается.
поэтому я использовал window.onbeforeunload для подтверждения оповещения и window.onunload для
выход из системы.)(
но обе функции работают в IE и Chrome.(Приложение работает отлично)
window.onbeforeunloadне работает в Opera и мое сообщение не будет отображаться в Firefox.window.onunloadне работает в Safari, Opera и Браузер firefox.
мой код javaScript будет,
// Used for confirmation , to closing the window
window.onbeforeunload = function () {
return "Are you sure want to LOGOUT the session ?";
};
// Used to logout the session , when browser window was closed
window.onunload = function () {
if((sessionId != null)&&(sessionId!="null")&& (sessionId != ""))
logout();
};
Я также пробовал ту же функцию с JQuery,
<script type="text/javascript">
$(window).on('beforeunload', function() {
return 'Are you sure want to LOGOUT the session ?';
});
$(window).unload(function() {
if ((sessionId != null) && (sessionId != "null") && (sessionId != "")) {
logout();
}
});
</script>
6 ответов:
к сожалению, методы, которые вы используете, не поддерживается в этих браузерах. Чтобы поддержать мой ответ (это неподдерживающее поведение), я дал ссылки ниже.
onbeforeunloadиonunloadне работаетopera... чтобы поддержать этоonbeforeunload in Opera
http://www.zachleat.com/web/dont-let-the-door-hit-you-onunload-and-onbeforeunload/хотя
onunloadсобытие не работа полностью, вы можете использоватьonunloadчтобы отобразить предупреждение, если пользователь щелкает ссылку для перехода от страницы с несохраненной формой.
onunloadне работаетsafari... чтобы поддержать этоhttps://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
вы могли бы попробовать использовать
pagehideсобытие в браузере safari вместоonunload.
onunloadне работает вfirefox... чтобы поддержать этоони еще не придумали решение в FF тоже
желаю Вам удачи ура.
вот рабочее решение для ie, firefox и chrome:
var myEvent = window.attachEvent || window.addEventListener; var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox var confirmationMessage = 'Are you sure to leave the page?'; // a space (e || window.event).returnValue = confirmationMessage; return confirmationMessage; });
я смог заставить его работать в IE и FF с помощью jQuery:
$(window).bind('beforeunload', function(){ });вместо: unload, onunload или onbeforeunload
Я получил решение для
onunloadво всех браузерах, кроме Opera, изменив асинхронный запрос Ajax на синхронный запрос.xmlhttp.open("POST","LogoutAction",false);Он хорошо работает для всех браузеров, кроме Опера.
событие onunload вызывается не во всех браузерах. Хуже того, вы не можете проверить возвращаемое значение события onbeforeunload. Это предотвращает нас от фактического формирования функции выхода из системы.
однако, вы можете взломать вокруг этого.
выйдите из системы Первым делом в событии onbeforeunload. затем подскажите пользователю. Если пользователь отменяет свой выход, автоматически войдите в систему, используя событие onfocus. Немного назад, но я думаю, что это должно сработать.
'use strict'; var reconnect = false; window.onfocus = function () { if (reconnect) { reconnect = false; alert("Perform an auto-login here!"); } }; window.onbeforeunload = function () { //logout(); var msg = "Are you sure you want to leave?"; reconnect = true; return msg; };
Firefox просто не показывает пользовательские сообщения onbeforeunload. Mozilla говорят, что они защищают конечных пользователей от вредоносных сайтов, которые могут показать вводящий в заблуждение текст.
Comments