Firefox 4 onBeforeUnload пользовательское сообщение - PullRequest
69 голосов
/ 23 марта 2011

В Firefox 3 я смог написать всплывающее окно с подтверждением:

window.onbeforeunload = function() {
   if (someCondition) {
      return 'Your stream will be turned off';
   }
}

Теперь в Firefox 4 он не показывает мое пользовательское сообщение. Сообщение по умолчанию, которое оно предоставляет, даже не соответствует тому, что делает мое приложение.

firefox 4 confirm

Может ли это сообщение по умолчанию быть переопределено?

Ответы [ 4 ]

52 голосов
/ 23 марта 2011

С MDN :

Обратите внимание, что в Firefox 4 и более поздних версиях возвращенная строка не отображается для пользователя. См. Ошибка 588292 .

Эта «ошибка» на самом деле является (имхо сомнительной) функцией ... поэтому нет возможности отобразить сообщение в Firefox 4. Если вы считаете, что его следует изменить, прокомментируйте эту ошибку, чтобы разработчики Firefox знали, что люди на самом деле хочу иметь возможность показывать пользовательскую строку.

32 голосов
/ 26 марта 2012

В дополнение к ответу выше, я улучшил обходной путь.

Я использовал jquery здесь. Вы также можете использовать функцию javascript по умолчанию.

$(window).bind('beforeunload', function() {
    if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
        if(confirm("Are you Sure do you want to leave?")) {
            history.go();
        } else {
            window.setTimeout(function() {
                window.stop();
            }, 1);
        }
    } else {
        return "Are you Sure do you want to leave?";
    }
});

Протестировано и работает в Firefox 11. :)

3 голосов
/ 15 марта 2012

Мой обходной путь - показывать оповещение в onbeforeunload:

window.onbeforeunload=function() {
    if ( /Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
        alert("Blah blah. You have to confirm you are leaving this page in the next dialogue.");
    }
    return "Blah blah."; 
} 

(он показывает два диалога в Firefox, один диалог в другом месте.)

1 голос
/ 13 мая 2011

Попробуйте реализовать его с сообщением подтверждения,

window.onbeforeunload=function(){
   return confirm("Are you sure??");
}

Конечно, когда пользователь подтверждает, отображается сообщение FF4, так что, возможно, вам лучше отобразить его один раз для сайта при входе в систему / посещении.Печенье должно помочь.

...