de la fenêtre.proche et à l'auto.fermer ne fermez pas la fenêtre de google Chrome
Le problème est que lorsque j'invoque window.close()
ou self.close()
il ne ferme pas la fenêtre. Maintenant, il semble y avoir une croyance que dans Chrome, vous ne pouvez pas fermer par le script de la fenêtre ce qui n'est pas de script créé. C'est manifestement faux, mais peu importe, elle est censée encore à le faire, même si elle nécessite de pop-up une alerte pour confirmer. Ce ne sont pas des passe.
Si quelqu'un aurait-il réel, fonctionnelle et la méthode éprouvée de la fermeture d'une fenêtre à l'aide de quelque chose comme javascript:window.close()
ou javascript:self.close()
qui ne fait ce qui est attendu et ce qui se passe très bien dans tous les navigateurs qui n'est PAS à base de Chrome? Toutes les suggestions sont grandement appréciés et je suis à la recherche pour le Javascript solution spécifique, rien de JQuery ou de la troisième partie mise en œuvre.
Mise à jour: Alors que beaucoup de ce qui a été suggéré a des limites et des problèmes d'utilisation, la dernière suggestion (spécifique à TamperMonkey) à l'aide de //@grant window.close
dans l'en-tête du script sera souvent faire l'affaire, même sur les onglets qui, normalement, ne peut pas gérer la méthode close. Bien que pas entièrement idéal et n'est pas généralisée à tous les cas, c'est une bonne solution dans mon cas.
window.close()
fonctionne pour moi sur chrome.window.close
ne fait partie d'aucun standard, donc il n'y a aucune garantie de la cohérence (ou encore mise en œuvre) dans les navigateurs.- Euh, non, il ne l'est pas. Il n'a rien à voir avec la langue. C'est une fonction implémentée par les navigateurs. Si vous pouvez écrire un minimum d'un exemple montrant comment
window.close
ne fonctionne pas comme il le devrait, je pense que cela peut être plus utile que de dire "ça ne fonctionne pas". - Je vous ai donné DEUX exemples. L'orthographe pour vous,
<a href="javascript:window.close">CLOSE</a>
- un tuteur qui est une mauvaise javascript. Essayez de la fenêtre.close() et ça fonctionne. de la fenêtre.près, c'est juste un nom de variable et n'ira pas en appel de la fonction (à moins qu'il ne fonctionne pas quand je l'ai tester en chrome 37). Quand j'ai changer votre exemple de la fenêtre.close (), il fonctionne dans chrome 37.
- ce que vous avez dit est discutable et n'ajoute rien.
- GµårÐïåñ Ce que @George dit n'est PAS discutable (à moins que j'ai pas du tout compris le sens du mot). Il est correct en indiquant que vous avez une erreur syntaxique dans le javascript dans votre exemple, et si vous avez le même message d'erreur dans votre code applicatif, alors ce n'est plus que probable que la cause de votre problème. SI, cependant, ce sont juste des fautes de frappe dans votre exemple, alors vous devriez corriger les fautes de frappe pour obtenir de meilleures réponses.
Vous devez vous connecter pour publier un commentaire.
Ordinaire javascript ne peut pas fermer les fenêtres de bon gré mal gré. C'est une fonctionnalité de sécurité, introduit il y a longtemps, à l'arrêt des différents actes malveillants et les ennuis.
De la toute dernière version des spécifications pour
window.close()
:Cela signifie que, avec une petite exception près, le javascript ne doit pas être autorisé à fermer une fenêtre qui n'a pas été ouvert par le même javascript.
Chrome qui permet de l'exception-qu'elle ne s'applique pas à userscripts -- cependant Firefox ne le fait pas. Le Firefox de la mise en œuvre d'arrache-unis:
Si vous essayez d'utiliser
window.close
à partir d'un Greasemonkey /Tampermonkey /script vous obtiendrez:Firefox: Le message d'erreur "
Scripts may not close windows that were not opened by script.
"Chrome: juste silencieusement échoue.
La solution à long terme:
La meilleure façon de traiter cette question est de faire une extension Chrome et/ou add-on Firefox à la place. Ces fiable pour fermer la fenêtre actuelle.
Toutefois, étant donné les risques de sécurité posés par
window.close
, sont beaucoup moins pour un Greasemonkey/Tampermonkey script Greasemonkey et Tampermonkey pourrait raisonnablement fournir cette fonctionnalité dans leur API (essentiellement de l'emballage les travaux d'extension pour vous).Envisager de faire une demande de fonctionnalité.
Le hacky solutions de contournement:
Chrome
estétait vulnérable à "l'auto-redirection" exploiter. Donc, ce type de code utilisé pour le travail en général:C'est buggy comportement, de l'OMI, et est maintenant (comme de près d'avril 2015) pour la plupart bloqués. Il faudra encore travailler à partir de injecté code seulement si l'onglet est fraîchement ouvert et n'a pas de pages dans l'historique de navigation. Il n'est donc utile que dans un petit nombre de circonstances.
Cependant, une variation travaille toujours sur Chrome (v43 & v44) plus Tampermonkey (v3.11 ou une version ultérieure). L'utilisation explicite
@grant
et la plainewindow.close()
. Par exemple:Grâce à zanetu pour la mise à jour. Notez que cela ne fonctionne pas si il y a un seul onglet ouvert. Il ne ferme onglets supplémentaires.
Firefox est sécurisé contre qui les exploitent. Alors, la seule façon javascript est de paralyser les paramètres de sécurité d'un navigateur à un moment.
Vous pouvez ouvrir
about:config
et définirallow_scripts_to_close_windows
àtrue
.Si votre script est pour un usage personnel, aller de l'avant et le faire. Si vous demandez à quelqu'un d'autre que la mise sur, ils serait intelligent, et justifié, à diminuer les préjugés.
Il n'y a actuellement pas d'équivalent réglage pour Chrome.
dom.allow_scripts_to_close_windows;false
àtrue
mais je crois que rien dans Chrome sans le piratage de la source ou de reconstruire ce qui est de savoir comment j'ai obtenu autour d'elle pour l'instant. Je sais et j'ai parlé à la TM développeur et plus récemment dans l'alpha/beta, nous avons mis cela comme une option de compatibilité (paramètre du script) pour exécuter en man-in-the-middle style, fonctionne. Je suppose que court de l'hacks nous n'avons pas de solution propre, de la pitié.36.0.1985.125 m
. Le hack fonctionne toujours, mais il est raisonnable de supposer qu'il sera bloqué parfois dans le futur.allow_scripts_to_close_windows;true
etopen(location, '_self').close();
pour le faire fonctionner. Merci beaucoup.addJS_Node()
à partir de cette réponse.GM_main()
fonction et mettre de l'emplacement hack à l'intérieur. Cependant, je viens de retesté et ce sera désormais ne fonctionne que si l'onglet a été fraîchement ouverte. C'est l'onglet est toujours en première page et n'a rien dans l'onglet de navigation de l'histoire. Si ce n'est pas votre cas, alors votre seul recours consiste à écrire une extension.window.close()
travaillera en Tampermonkey si vous définissez@grant
à une valeur autre quenone
. Voir ce thread.setTimeout(window.close, 5000)
et au hasard de défilement et de cliquer sur les liens sur une page (y compris des liens pointant vers des parties de la page en cours, et de liens pointant vers un autre site) mais il fonctionne toujours (dans Chrome v44.0.2403.155 et Tampermokey BETA v3.12.4752). Une restriction de Tampermonkey j'ai oublié de mentionner, c'est que vous ne pouvez pas fermer un onglet à l'aide dewindow.close()
si c'est le seul à gauche, qui est, vous ne pouvez pas arrêter de Chrome complètement.Chrome Fixe les problèmes de sécurité sur la version 36.0.1985.125
Chrome 36.0.1985.125 MERCREDI, 16 JUILLET 2014
Note de version
De mon observation, cette mise à jour fixe, la question sur l'utilisation de
window.close()
pour fermer la fenêtre contextuelle. Vous verrez cela dans la console lorsque celle-ci échoue, "les Scripts peuvent fermer les fenêtres ont été ouvertes par elle.". Cela signifie que Le hacky solutions de contournement (Brock Adams réponse) peut ne pas fonctionner dans la dernière version.Donc, dans le précédent Chrome publié construit, le bloc de code ci-dessous peut travaillé, mais pas avec cette mise à jour.
Pour cette mise à jour, vous devez mettre à jour votre code en conséquence pour fermer la fenêtre contextuelle. L'une des solution est de saisir la fenêtre popup id et l'utilisation
méthode pour le supprimer. Chrome extension de l'API windows peut être trouvé à le chrome.windows.
En fait mon extension chrome MarkView a été confronté à ce problème et j'ai dû mettre à jour mon code pour le faire fonctionner pour cette mise à Jour de Chrome. Par la voie, MarkView est un outil de lecture et d'écriture Génial Démarque des Fichiers, il propose des fonctionnalités, y compris Aperçu du Contenu, Tableaux Triables et le bloc de code de la surbrillance de la syntaxe avec le numéro de ligne.
J'ai également créé ce post, tout les commentaires sont les bienvenus.
open(location, '_self').close();
-- notez l'utilisation de la valeur de retour deopen()
. Cela fonctionne encore sur Chrome36.0.1985.125 m
open(location, '_self').close();
, je me suis "non autorisée" erreur sur cette. Cette erreur est différent avec fenêtre.close()(warning on this"Scripts may close only the windows that were opened by it."). It looked like
ouvert(emplacement, '_self').close();` avancer un peu, mais il ne peut pas terminer dans mon cas. Merci @brock-adams pour le commentaire.chrome.windows.remove
il dit impossible de trouver le symbole de chrome. comment puis-je résoudre ce problème? ai-je besoin d'ajouter une sorte de référence?Dans tampermonkey maintenant, vous pouvez utiliser
Et puis tout simplement appeler
Je suis l'aide de la méthode posté par Brock Adams et cela fonctionne dans Firefox, si elle est effectuée par l'utilisateur.
Je suis de l'appeler à partir d'appuyer sur un bouton de sorte qu'il est initié par l'utilisateur, et il fonctionne toujours très bien avec Chrome 35-40, Internet Explorer 11, Safari 7-8 et AUSSI Firefox 29-35. J'ai testé à l'aide de la version 8.1 de Windows et de Mac OS X 10.6 10.9 & 10.10 si c'est différent.
Fermeture automatique de la Fenêtre de Code (sur la page qui se ferme de lui-même)
Le code complet pour être utilisé sur l'utilisateur-la fenêtre qui s'ouvre qui peuvent se fermer de lui-même:
window_to_close.htm
JavaScript:
HTML:
Essayez cette page de test: (testé en Chrome 40 et Firefox 35)
http://browserstrangeness.bitbucket.io/window_close_tester.htm
Ouvreur de fenêtre de Code (sur une page qui s'ouvre au-dessus de la page)
Pour faire ce travail, de sécurité imposées par la croix-compatibilité avec les navigateurs exige que la fenêtre est fermée, doit avoir déjà été ouvert par l'utilisateur en cliquant sur un bouton dans le même domaine du site.
Par exemple, la fenêtre qui utilise la méthode ci-dessus pour fermer, peut être ouvert à partir d'une page à l'aide de ce code (code fourni à partir de mon exemple de la page liée ci-dessus):
window_close_tester.htm
JavaScript:
HTML:
<button onclick="open(location,'_self').close()" >Close Window</button>
. Je fais évidemment quelque chose de mal? Il me semble que c'est aussi initié par l'utilisateur. Notez que j'obtiens le même résultat si j'utilise un<button>
ou un<input type="button">
.window.open('', '_self', ''); window.close();
mais il a travaillé avecopen(location, '_self').close();
Beaucoup de gens sont encore en train d'essayer de trouver un moyen de fermer le navigateur google Chrome à l'aide de javascript. La méthode suivante fonctionne uniquement lorsque vous utilisez google Chrome comme lanceur d'applications de kiosque par exemple!
J'ai testé le suivant:
Je suis en utilisant l'extension suivante: Près Du Kiosque
Je suis en suivant les instructions d'utilisation et il semble fonctionner très bien (assurez-vous de vider le cache tout en faisant les tests). Le javascript que j'utilise est (fixé à l'événement click):
J'espère que ça aide quelqu'un, car c'est la seule solution que j'ai trouvé.
Remarque: Il semble que l'extension fonctionne en arrière-plan et ajoute un Chrome icône de barre d'état. Il a l'option suivante est vérifiée: "Laissez-Chrome exécuter en arrière-plan" (ou autre éditeur de texte). Vous pouvez avoir besoin de jouer avec elle, jusqu'à ce que cela fonctionne pour vous. J'ai décoché, et maintenant il fonctionne très bien!
Malgré pensant que c'est "manifestement faux", ce que tu dis "semble être une croyance" est vraiment bon. La Mozilla documentation pour de la fenêtre.fermer dit
Vous dire qu'il est "censé encore le faire", mais je ne pense pas que vous trouverez toute référence qui soutient que, peut-être que vous avez mal rappelé quelque chose?
J'ai trouvé une nouvelle manière qui fonctionne pour moi perfetly
Le code ci-dessous a fonctionné pour moi -
Testé sur Chrome 43.0.2357.81
Cela peut être vieux, mais nous allons y répondre.
- Je utiliser haut.close() pour fermer un onglet. fenêtre.close() ou autres...à proximité n'a pas fonctionné pour moi.
"Scripts may not close windows that were not opened by script."
problème mentionné dans d'autres réponses.Dans mon cas, la page a besoin de la fermer, mais susceptible d'avoir été ouvert par un lien et donc
window.close
serait un échec.La solution que j'ai choisie est de délivrer le
window.close
, suivie par unewindow.setTimeout
qui redirige vers une autre page.De cette façon, si
window.close
réussit, l'exécution de la page s'arrête, mais si elle échoue, en une seconde, il va rediriger vers une autre page.Que si vous ouvrez une nouvelle fenêtre à l'aide de la fenêtre.open() sera la nouvelle fenêtre, être en mesure de fermer à l'aide de code comme je l'ai mentionné ci-dessus. Cela fonctionne parfaitement pour moi 🙂 Remarque : n'utilisez Jamais href afin d'ouvrir la page dans un nouvel onglet. De la fenêtre.close() ne fonctionne pas avec "href" . Utilisation de la fenêtre.open() à la place.
Essayer quelque chose comme cela onclick="return self.close()"