Comment puis-je fermer une fenêtre avec Javascript sur Mozilla Firefox 3?

j'ai besoin de fermer l'onglet qui affiche ma page, en cliquant sur un bouton. Mais firefox ne permet pas de fermer la fenêtre par javascript tant qu'elle n'est pas ouverte par javascript. Si j'ai mis la valeur de dom.allow_scripts_to_close_windows pour être "vrai", alors même normal window.close() fonctionne aussi. Mais ce n'est pas une bonne solution. : (

j'ai essayé la solution de contournement suivante suggéré dans l'un des forums:

<script language="javascript" type="text/javascript">
function closeWindow() {
   window.open('','_parent','');
   window.close();
}
</script> 

Il est censé faire croire au navigateur qu'il a été effectivement ouvert par javascript, mais cela ne fonctionne pas dans Firefox 3.

quelqu'un peut-il Suggérer une solution de contournement?

24
demandé sur Anindya Sengupta 2009-04-17 17:31:20
la source

7 ответов

function closeWindow() {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
    alert("This will close the window");
    window.open('','_self');
    window.close();
}

closeWindow();
10
répondu Bill the Lizard 2010-06-20 17:45:33
la source

Pour des raisons de sécurité, votre script ne peut pas fermer une fenêtre/onglet qu'il n'a pas ouvert.

la solution est de présenter l'invite d'âge plus tôt dans l'histoire de la navigation. Ensuite, vous pouvez choisir de leur permettre d'entrer dans votre site ou pas en fonction de leur entrée.

au Lieu de fermer la page qui présente l'invite, vous pouvez simplement dire, "Désolé", ou peut-être rediriger l'utilisateur vers la page d'accueil.

7
répondu Andy 2009-04-18 00:42:24
la source

ce code fonctionne à la fois pour IE 7 et la dernière version de Mozilla bien que le réglage par défaut dans mozilla ne permette pas de fermer une fenêtre par javascript.

Voici le code:

fonction F11() { fenêtre.ouvert ( " , '_parent',"); fenêtre.open("login.aspx","", " channelmode"); fenêtre.proche(); }

pour changer le paramètre par défaut:

1.tapez "about: config" dans votre barre d'adresse firefox et entrez;

2.assurez-vous que votre "dom.allow_scripts_to_close_windows" est vrai

6
répondu 2009-08-20 14:31:07
la source

self.close () ne fonctionne pas, Êtes-vous sûr de fermer une fenêtre et non un popup généré par un script ?

les gars, vous voudrez peut-être regarder à ceci : https://bugzilla.mozilla.org/show_bug.cgi?id=183697

2
répondu Salvin Francis 2009-12-10 11:48:43
la source

à partir d'un stand-point d'expérience utilisateur, vous ne voulez pas qu'une action majeure soit faite passivement.

quelque chose de majeur comme la fermeture d'une fenêtre devrait être le résultat d'une action de l'utilisateur.

1
répondu Zack Marrapese 2009-04-17 18:02:53
la source

si les navigateurs voient cela comme un problème de sécurité et / ou d'utilisabilité, alors la réponse à votre question est simplement de ne pas fermer la fenêtre, car par définition ils trouveront des solutions pour votre contournement de toute façon. Il y a une belle sommation sur le raisonnement pourquoi le choix a été fait dans la base de données des bogues de firefox https://bugzilla.mozilla.org/show_bug.cgi?id=190515#c70

Alors, que pouvez-vous faire?

Modifier les spécifications de votre site web, donc que vous avez une solution pour ces personnes. Vous pouvez, par exemple, en profiter pour les orienter vers un partenaire.

c'est-à-dire, le voir comme un transfert à quelqu'un d'autre qui (potentiellement) en a besoin. Par exemple, Hanselman avait un article récent sur ce qu'il fallait faire dans l'autre situation semblable, à savoir 404 erreurs: http://www.hanselman.com/blog/PutMissingKidsOnYour404PageEntirelyClientSideSolutionWithYQLJQueryAndMSAjax.aspx

1
répondu Cine 2010-03-10 05:55:14
la source

Ce code ne fonctionne, il sont certainement

function closing() {
var answer = confirm("Do you wnat to close this window ?");
    if (answer){
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
        window.close();
    }
    else{
        stop;
    }
}
1
répondu kamlesh 2011-06-13 14:07:31
la source

Autres questions sur