web-dev-qa-db-fra.com

Firefox 4 onBeforeUnload message personnalisé

Dans Firefox , j'ai pu écrire une fenêtre de confirmation personnalisée avec:

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

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

firefox 4 confirm

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

69
JoJo

De MDN :

Notez que dans Firefox 4 et versions ultérieures, la chaîne retournée n'est pas affichée pour l'utilisateur. Voir bug 588292 .

Ce "bug" est en fait une fonctionnalité (à mon humble avis). Il n'y a donc aucun moyen d'afficher le message dans Firefox 4. Si vous pensez qu'il devrait être modifié, commentez ce bug afin que les développeurs de Firefox sachent que les gens veulent réellement être capable d'afficher une chaîne personnalisée.

52
ThiefMaster

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

J'ai utilisé jquery ici. vous pouvez également utiliser la fonction 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.:)

32
Nasif

Ma solution de contournement 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.)

3
xmedeko

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, il est donc préférable de l'afficher une fois par site lors de la connexion/visite. Un cookie devrait faire l'affaire.

1
Jguru