Je veux créer un lien sur une page Web qui fermerait l'onglet actuellement actif dans un navigateur sans fermer les autres onglets du navigateur.
Lorsque l'utilisateur clique sur le lien de fermeture, un message d'alerte devrait apparaître lui demandant de confirmer avec deux boutons, "OUI" et "NON". Si l'utilisateur clique sur "OUI", fermez cette page et si "NON", ne faites rien.
Comment ceci peut être fait? Aucune suggestion?
javascript
html
hyperlink
Naveed
la source
la source
Réponses:
Vous aurez besoin de Javascript pour cela. Utilisation
window.close()
:Remarque: l'onglet actuel est implicite. C'est équivalent:
ou vous pouvez spécifier une fenêtre différente.
Donc:
avec HTML:
ou:
Vous
return false
ici pour empêcher le comportement par défaut de l'événement. Sinon, le navigateur tentera d'accéder à cette URL (ce qui n'est évidemment pas le cas).Maintenant, les options de la
window.confirm()
boîte de dialogue seront OK et Annuler (pas Oui et Non). Si vous voulez vraiment Oui et Non, vous devrez créer une sorte de boîte de dialogue Javascript modale.Remarque: il existe des différences spécifiques au navigateur avec ce qui précède. Si vous avez ouvert la fenêtre avec Javascript (via
window.open()
), vous êtes autorisé à fermer la fenêtre avec javascript. Firefox vous interdit de fermer d'autres fenêtres. Je crois qu'IE demandera une confirmation à l'utilisateur. Les autres navigateurs peuvent varier.la source
about:config
dom.allow_scripts_to_close_windows = true
pourrait être la solution dans Firefox (pourrait être un gros risque pour la sécurité!)<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
Voir aussi cet articleEssaye ça
la source
Cette méthode fonctionne dans Chrome et IE:
la source
open(location, '_self').close();
Pour autant que je sache, ce n'est plus possible dans Chrome ou FireFox. Cela peut toujours être possible dans IE (au moins avant Edge).
la source
<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
Voir aussi cet articleC'est possible. J'ai cherché sur tout le net pour cela, mais une fois quand j'ai répondu à l'une des enquêtes de Microsoft, j'ai finalement obtenu la réponse.
essaye ça:
cela fermera l'onglet actuel pour vous.
la source
Testé avec succès dans FF 18 et Chrome 24:
Insérer dans la tête:
HTML:
Les crédits vont à Marcos J. Drake .
la source
Essayez cela aussi. Travailler pour moi sur les trois principaux navigateurs.
la source
Les éléments suivants fonctionnent pour moi dans Chrome 41:
J'ai essayé plusieurs idées pour FF, y compris l'ouverture d'une page Web réelle, mais rien ne semble fonctionner. Si je comprends bien, tout navigateur fermera un onglet ou une fenêtre avec xxx.close () s'il a vraiment été ouvert par JS, mais FF, au moins, ne peut pas être dupé pour fermer un onglet en ouvrant du nouveau contenu à l'intérieur de cet onglet.
Cela a du sens quand on y pense - un utilisateur peut ne pas vouloir que JS ferme un onglet ou une fenêtre qui a un historique utile.
la source
Désolé pour le nécropostage, mais j'ai récemment implémenté un site hébergé local qui avait besoin de pouvoir fermer l'onglet du navigateur actuel et trouvé des solutions de contournement intéressantes qui ne sont pas bien documentées où que je puisse trouver, alors je me suis engagé à le faire.
Remarque: Ces solutions de contournement ont été effectuées avec un site hébergé localement à l'esprit et (à l'exception d'Edge) nécessitent que le navigateur soit spécifiquement configuré, donc ne serait pas idéal pour les sites hébergés publiquement.
Contexte: Par le passé, le script jQuery
window.close()
était capable de fermer l'onglet actuel sans problème sur la plupart des navigateurs. Cependant, les navigateurs modernes ne prennent plus en charge ce script, potentiellement pour des raisons de sécurité.Google Chrome:
Chrome n'autorise pas l'exécution du script window.close () et rien ne se passe si vous essayez de l'utiliser. En utilisant le plugin Chrome TamperMonkey, nous pouvons cependant utiliser la méthode window.close () si vous incluez le
// @grant window.close
dans l'en-tête UserScript de TamperMonkey.Par exemple, mon script (qui est déclenché lorsqu'un bouton avec id = 'close_page' est cliqué et si 'oui' est pressé dans la fenêtre contextuelle du navigateur) ressemble à:
Remarque: Cette solution ne peut cependant fermer l'onglet que si ce n'est PAS le dernier onglet ouvert. Donc, efficacement, il ne peut pas fermer l'onglet si cela provoquait la fermeture de la fenêtre en étant le dernier onglet ouvert.
Firefox:
Firefox a un paramètre avancé que vous pouvez activer pour permettre aux scripts de fermer les fenêtres, ce qui active efficacement la
window.close()
méthode. Pour activer ce paramètre, accédez à about: config puis recherchez et recherchez la préférence dom.allow_scripts_to_close_windows et passez de false à true.Cela vous permet d'utiliser la
window.close()
méthode directement dans votre fichier jQuery comme vous le feriez pour tout autre script.Par exemple, ce script fonctionne parfaitement avec la préférence définie sur true:
Cela fonctionne beaucoup mieux que la solution de contournement de Chrome car il permet à l'utilisateur de fermer l'onglet actuel même s'il s'agit du seul onglet ouvert et ne nécessite pas de plug-in tiers. Le seul inconvénient, cependant, est qu'il permet également à ce script d'être exécuté par différents sites Web (pas seulement celui sur lequel vous prévoyez de l'utiliser), ce qui pourrait potentiellement constituer un danger pour la sécurité, bien que je ne puisse pas imaginer que la fermeture de l'onglet actuel soit particulièrement dangereuse.
Bord:
Décevant, Edge a en fait réalisé le meilleur des 3 navigateurs que j'ai essayés et a travaillé avec la
window.close()
méthode sans nécessiter de configuration. Lorsque lewindow.close()
script est exécuté, une fenêtre contextuelle supplémentaire vous avertit que la page tente de fermer l'onglet actuel et vous demande si vous souhaitez continuer.Remarque finale: Les solutions pour Chrome et Firefox sont des solutions de contournement pour quelque chose que les navigateurs ont intentionnellement désactivé, potentiellement pour des raisons de sécurité. Ils exigent également que l'utilisateur configure au préalable leurs navigateurs pour qu'ils soient compatibles, ce qui ne serait probablement pas viable pour les sites destinés à un usage public, mais ils sont idéaux pour les solutions hébergées localement comme la mienne.
J'espère que cela vous a aidé! :)
la source
En ce qui concerne les personnes qui visitent encore cette page, vous êtes uniquement autorisé à fermer un onglet ouvert par un script OU en utilisant la balise d'ancrage HTML avec _blank cible. Les deux peuvent être fermés en utilisant le
la source
cela a fait le travail pour moi
la source
un peu tard mais c'est ce que j'ai découvert ...
window.close()
ne fonctionnera (IE est une exception) que si la fenêtre que vous essayez aclose()
été ouverte par un script utilisant la méthode window.open ().! (Veuillez voir le commentaire de @killstreet ci-dessous à propos de la balise d'ancrage avec la cible _blank)
TLDR : chrome & firefox permettent de les fermer.
vous obtiendrez une erreur de console: les scripts peuvent ne pas fermer les fenêtres qui n'ont pas été ouvertes par le script. comme une erreur et rien d'autre.
vous pouvez ajouter un paramètre unique dans l'URL pour savoir si la page a été ouverte à partir d'un script (comme le temps) - mais c'est juste un hack et non une fonctionnalité native et échouera dans certains cas.
je ne pouvais pas trouver de moyen de savoir si la page a été ouverte à partir d'un open () ou non, et fermer ne lancera pas et des erreurs. cela n'imprimera pas "test":
vous pouvez en lire plus dans MDN sur la fonction close ()
la source
Voici comment créer un tel lien:
<a href="javascript:if(confirm('Close window?'))window.close()">close</a>
la source
C'est une façon de résoudre le même problème, déclarez une fonction JavaScript comme celle-ci
Ajoutez la ligne suivante au code HTML pour appeler la fonction à l'aide d'un
<button>
la source