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.
ce message par défaut peut-il être annulé?
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.
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. :)
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.)
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.