69 votes

Message personnalisé de Firefox 4 onBeforeUnload

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 , mon message personnalisé n’a pas été affiché. Le message par défaut fourni ne correspond même pas à ce que fait mon application.

firefox 4 confirmer

Ce message par défaut peut-il être remplacé?

52voto

ThiefMaster Points 135805

De MDN:

Notez que dans Firefox 4 et, plus tard, la chaîne renvoyée est pas affiché à l'utilisateur. Voir Le Bug 588292.

Ce "Bug" est en fait une (à mon humble avis discutable) de la fonction.. donc il n'y a pas moyen d'afficher le message dans Firefox 4. Si vous pensez qu'il devrait être changé, un commentaire sur ce bug donc les développeurs de Firefox savez que les gens veulent vraiment être en mesure d'afficher une chaîne personnalisée.

32voto

Nasif Points 275

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

J'ai utilisé jquery ici. vous pouvez également utiliser les fonctions javascript par défaut.

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

Testé et fonctionnant également dans firefox 11. :)

3voto

xmedeko Points 1038

Ma solution consiste à afficher une alerte dans 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."; 
} 
 

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

1voto

Jguru Points 29

Essayez de l'implémenter avec un message de confirmation,

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

Bien sûr, lorsque l'utilisateur confirme, le message FF4 s'affiche. Vous pouvez donc l'afficher une fois par site lors de la connexion / visite. Un cookie devrait faire l'affaire.

0voto

Sofiane Points 35

Il existe maintenant un moyen de remplacer le message natif par défaut de beforeunload pour Firefox. Je viens de tester la solution Nasif et cela ne fonctionne pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X