FireFox et window.close()
Par Méthylbro le mardi 15 avril 2008, 10:48 - Développement - Lien permanent
Firefox est un navigateur idiot. Je ne l'ai jamais aimé ; je ne l'aimerais sans doute jamais. Et je m'assume.
Sans faire de la polémique de bas étage ... je vais critiquer royalement FireFox. C'est un comportement idiot de ma part ; mais ca aura le mérite de me défouler un peu.
Si l'on s'en réfère à la théorie ; fermer une fenêtre avec javascript c'est facile. Quenéni brave gens ! C'est sans compter sur la guerre sempiternelle que ce livre nos deux grand browsers concurrents ! Les bien nommés Gecko et IE.
Théoriquement donc ; si l'on regarde la documentation de javascript ; pour fermer une fenêtre ; il suffit de dire window.close() ; fastoche. Seulement ; FireFox ; rusé comme un renard vous répond "et non l'ami ! trop simple !". Je lui ajouterais bien un peu d'essence pour le faire cramer plus vite moi.
Donc ; théoriquement ; pour fermer une fenêtre on ferais quelque chose du genre :
function fermerFenetre() {
if (confirm("Etes-vous sur de vouloir quitter ?")) {
window.close();
}
}Oui mais voilà ; sous IE (ou Avant Browser dans mon cas. Ce qui revient au même ; car même moteur) tout fonctionne comme prévu. Mais sous FireFox : rien. Il ne considère même pas ca comme une erreur. Il ignore juste votre commande. La seule solution que j'ai trouvé ; pour avoir un effet similaire avec Firefox ; ce n'est pas de fermer la fenêtre ... Mais d'en ouvrir une ! Bah oui ; pas le choix. Il ignore complètement notre commande window.close() ; donc on va lui dire d'ouvrir un about:blank.
function fermerFenetre() {
if (confirm("Etes-vous sur de vouloir quitter ?")) {
window.open('about:blank','_parent','');
window.close();
}
}
exemple
Commentaires
Raté la deuxième solution ne fonctionne pas sous firefox 3b5. Avertissement : Les scripts ne peuvent pas fermer une fenêtre qui n'a pas été ouverte par un script.
La première solution renvoie la même erreur.
Oui, sauf q'un pop up est toujour crée depuis un script donc cela reste idiot comme principe ...
Je suis tout à fait d'accord avec toi, FireFox ne mérite pas le tralala qu'on en fait. Je ne l'aime pas non plus pour bien des raisons. Malheureusement, il faut faire avec lui quand on fait un site... Et cela ne régle pas les problèmes avec javascript !!!! :s
alors déjà, Gecko n'est pas un "browser" mais un moteur de rendu, et ensuite c'est bourré de fautes. mais merci quand même