501 votes

Comment fermer l'onglet en cours dans une fenêtre de navigateur ?

Je veux créer un lien sur une page Web qui fermerait l'onglet actif dans un navigateur sans fermer les autres onglets du navigateur. Lorsque l'utilisateur clique sur le lien de fermeture, un message d'alerte doit apparaître pour lui demander de confirmer avec deux boutons, "OUI" et "NON". Si l'utilisateur clique sur "OUI", la page est fermée et s'il clique sur "NON", rien n'est fait.

Comment faire ? Avez-vous des suggestions ?

2 votes

Je pourrais être en retard ici, mais cela est empêché par les navigateurs pour une raison.<br><br>Pensez à vous essayant de fermer une fenêtre encore et encore et elle ne se ferme pas car elle fait le " ". si non La partie " " de votre question qui est " ne rien faire ". <br><br>Ce sera certainement irritant !

0 votes

Ce n'est pas possible. Lisez ceci. stackoverflow.com/a/19768082/4671932

0 votes

Pour ceux qui essaient de fermer l'onglet de manière programmatique, j'ai deux choses à ajouter (TL:DR ;) 1 Vous pouvez uniquement fermer les onglets qui ont été ouverts avec javascript (comme Ryan Joy mentionnés). 2 qui ne sont pas mentionnées ici : Vous pouvez fermer l'onglet seulement si window.top.opener (la fenêtre "parent") n'est pas nulle.

576voto

cletus Points 276888

Vous aurez besoin de Javascript pour le faire. Utilisez window.close() :

close();

Note : la fenêtre actuelle est impliquée. Ceci est équivalent :

window.close();

ou vous pouvez spécifier une autre fenêtre.

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'aller à cette URL (ce qui n'est évidemment pas le cas).

Maintenant, les options sur le window.confirm() La boîte de dialogue sera OK et Cancel (et non Yes et No). Si vous vraiment si vous voulez Oui et Non, vous devrez créer une sorte de boîte de dialogue modale en Javascript.

Note : il y a des différences spécifiques aux navigateurs avec ce qui précède. Si vous avez ouvert la fenêtre avec Javascript (via window.open() ), vous êtes alors autorisé à fermer la fenêtre avec javascript. Firefox ne vous permet pas de fermer d'autres fenêtres. Je crois qu'IE demande à l'utilisateur de confirmer. Les autres navigateurs peuvent varier.

466 votes

Vous ne pouvez pas fermer un onglet via JavaScript. "Cette méthode ne peut être appelée que pour les fenêtres qui ont été ouvertes par un script utilisant la méthode window.open." En d'autres termes, vous ne pouvez utiliser JavaScript pour fermer une fenêtre/un onglet qui a été créé par JavaScript.

0 votes

@atxryan Et je crois que le même domaine/politique d'origine s'applique également.

7 votes

-1 Ne fonctionne pas chrome 30 PC les autres réponses montrant d'ouvrir une fenêtre dans l'onglet actuel et puis le fermer fonctionnent

254voto

Daniel Shen Points 840

Essayez ceci

<a href="javascript:window.open('','_self').close();">close</a>

2 votes

Fonctionne dans Firefox 31.0

1 votes

L'inconvénient de cette solution est qu'une requête get est envoyée au serveur. Mais d'un autre côté, je n'ai pas trouvé d'autre solution.

32 votes

En faisant cela depuis la console de Chrome, on obtient le résultat suivant : "Les scripts ne peuvent fermer que les fenêtres qu'ils ont ouvertes".

64voto

Palesz Points 1288

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>

63 votes

Plus simple : open(location, '_self').close();

1 votes

Cela a bien fonctionné dans IE 11, mais pas dans Chrome 38.

8voto

Julesfrog Points 81

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 à Marcos J. Drake .

4 votes

Ne fonctionne pas sur chrome "Les scripts ne peuvent fermer que les fenêtres qu'ils ont ouvertes."

0voto

Voici une façon de résoudre le problème : déclarez 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 HTML pour appeler la fonction à l'aide d'une balise <button>

<button name='closeIt' onClick="Exit()" >Click to exit </Button>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X