Firefox 4 onBeforeUnload mensaje personalizado


En Firefox 3, Pude escribir una ventana emergente de confirmación personalizada con:

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

Ahora en Firefox 4, no muestra mi mensaje personalizado. El mensaje predeterminado que proporciona ni siquiera es preciso para lo que hace mi aplicación.

firefox 4 confirmar

¿Se puede anular este mensaje predeterminado?

Author: JoJo, 2011-03-23

4 answers

De MDN:

Tenga en cuenta que en Firefox 4 y versiones posteriores la cadena devuelta no se muestra al usuario. Ver Bug 588292.

Este "error" es en realidad una característica (en mi humilde opinión cuestionable).. así que no hay manera de mostrar el mensaje en Firefox 4. Si crees que debería cambiarse, comenta ese error para que los desarrolladores de Firefox sepan que la gente realmente quiere poder mostrar una cadena personalizada.

 52
Author: ThiefMaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-22 22:46:21

Además de la respuesta anterior, he mejorado la solución.

He usado jquery aquí. también puede usar la función javascript predeterminada.

$(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?";
    }
});

Probado y trabajando en firefox 11 también. :)

 32
Author: Nasif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-21 11:58:48

Mi solución es mostrar alerta en 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."; 
} 

(Muestra dos diálogos en Firefox, uno en otro lugar.)

 3
Author: xmedeko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-28 08:24:57

Intente implementarlo con un mensaje de confirmación,

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

Por supuesto, cuando el usuario confirma, se muestra el mensaje FF4, así que tal vez sea mejor mostrar esto una vez por sitio en el inicio de sesión/visita. Una galleta debería hacer el truco.

 1
Author: Jguru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-13 15:04:35