Comment fermer l'onglet actuel dans une fenêtre de navigateur?
Je veux créer un lien sur une page Web qui fermerait l'onglet actuellement actif dans un navigateur sans fermer d'autres onglets dans le navigateur.
Lorsque l'utilisateur clique sur le lien de fermeture, un message d'alerte devrait apparaître demandant à l'utilisateur de confirmer avec deux boutons, " Oui "et"non". Si l'utilisateur clique sur "Oui", fermez cette page et si "non", ne rien faire.
Comment cela peut-il être fait? Toutes les suggestions?
10 réponses
Vous aurez besoin de Javascript pour le faire. Utilisation window.close()
:
close();
Remarque: l'onglet actuel est implicite. Ceci est équivalent:
window.close();
Ou vous pouvez spécifier une fenêtre différente.
Donc:
function close_window() {
if (confirm("Close Window?")) {
close();
}
}
Avec HTML:
<a href="javascript:close_window();">close</a>
Ou:
<a href="#" onclick="close_window();return false;">close</a>
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 sur la window.confirm()
boîte de dialogue sera OK et annuler (pas oui et non). Si vousvoulez 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 que IE demandera à l'utilisateur de confirmer. D'autres navigateurs peuvent varier.
Essayez ceci
<a href="javascript:window.open('','_self').close();">close</a>
Cette méthode fonctionne dans Chrome et IE:
<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
If you click on this the window will be closed after 1000ms
</a>
Pour autant que je sache, ce N'est plus possible dans Chrome ou FireFox. Cela peut encore être possible dans IE (au moins pré-Edge).
Testé avec succès dans FF 18 et Chrome 24:
Insérer dans la tête:
<script>
function closeWindow() {
window.open('','_parent','');
window.close();
}
</script>
HTML:
<a href="javascript:closeWindow();">Close Window</a>
Les Crédits vont à J. Marcos Drake.
Essayez ceci aussi. Travailler pour moi sur les trois principaux navigateurs.
<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
Ce qui suit fonctionne pour moi dans Chrome 41:
function leave() {
var myWindow = window.open("", "_self");
myWindow.document.write("");
setTimeout (function() {myWindow.close();},1000);
}
J'ai essayé plusieurs idées pour FF, y compris l'ouverture d'une page Web réelle, mais rien ne semble fonctionner. Pour autant que je comprenne, tout navigateur fermera un onglet ou une fenêtre avec xxx.close() s'il a été vraiment ouvert par JS, mais FF, au moins, ne peut pas être dupé en fermant un onglet en ouvrant un nouveau contenu dans cet onglet.
Cela a du sens quand vous y réfléchissez - un utilisateur peut bien ne pas vouloir que JS ferme un onglet ou une fenêtre qui a utile de l'histoire.
C'est une façon de résoudre la même chose, déclarer une fonction JavaScript comme ceci
<script>
function Exit() {
var x=confirm('Are You sure want to exit:');
if(x) window.close();
}
</script>
Ajoutez la ligne suivante au code HTML pour appeler la fonction à l'aide d'un <button>
<button name='closeIt' onClick="Exit()" >Click to exit </Button>
Voici comment créer un tel lien:
<a href="javascript:if(confirm('Close window?'))window.close()">close</a>