Firefox 4 onbeforeunload message personnalisé

dans Firefox 3 , j'ai pu écrire un popup de confirmation personnalisé avec:

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

maintenant dans Firefox 4 , il ne montre pas mon message personnalisé. Le message par défaut qu'il fournit n'est même pas précis à ce que fait mon application.

firefox 4 confirm

ce message par défaut peut-il être annulé?

68
demandé sur JoJo 2011-03-23 01:44:42

4 réponses

de MDN :

notez que dans Firefox 4 et plus tard la chaîne retournée n'est pas affichée à l'utilisateur. Voir Bogue 588292 .

ce " Bug " est en fait une fonctionnalité (IMHO discutable).. il n'y a donc aucun moyen d'afficher le message dans Firefox 4. Si vous pensez qu'il devrait être changé, commentez ce bug pour que les développeurs de Firefox sachent que les gens veulent réellement être en mesure pour afficher une chaîne personnalisée.

52
répondu ThiefMaster 2011-03-22 22:46:21

en plus de la réponse ci-dessus, j'ai amélioré la solution de contournement.

j'ai utilisé jquery ici. vous pouvez également utiliser la fonctionnalité javascript par défaut.

$(window).bind('beforeunload', function() {
    if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.) >= 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?";
    }
});

testé et opérationnel aussi dans firefox 11. :)

32
répondu Nasif 2012-09-21 11:58:48

mon contournement est de montrer l'alerte dans onbeforeunload:

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

(il montre deux dialogues dans Firefox, un dialogue ailleurs.)

3
répondu xmedeko 2012-08-28 08:24:57

Essayer de les mettre en œuvre avec un message de confirmation,

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

bien sûr quand l'utilisateur confirme alors le message FF4 est affiché, donc vous devriez peut-être afficher ceci une fois par site lors de la connexion/visite. Un cookie devrait faire l'affaire.

1
répondu Jguru 2011-05-13 15:04:35