окно.onbeforeunload и окна.onunload не работает в Firefox, Safari, Opera?



в мой чат-приложение, мне нужно получить подтверждение от пользователя , когда мое приложение закрывается.



поэтому я использовал window.onbeforeunload для подтверждения оповещения и window.onunload для
выход из системы.)(




  1. но обе функции работают в IE и Chrome.(Приложение работает отлично)


  2. window.onbeforeunload не работает в Opera и мое сообщение не будет отображаться в Firefox.


  3. 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>
780   6  

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... чтобы поддержать это

https://bugzilla.mozilla.org/show_bug.cgi?id=681636

они еще не придумали решение в 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

    Ничего не найдено.