Cómo cerrar la pestaña actual en una ventana del navegador?


Quiero crear un enlace en una página web que cierre la pestaña actualmente activa en un navegador sin cerrar otras pestañas en el navegador.
Cuando el usuario hace clic en el enlace cerrar, debe aparecer un mensaje de alerta pidiéndole que confirme con dos botones, "SÍ" y "NO". Si el usuario hace clic en "SÍ", cierre esa página y si "NO", no haga nada.

¿Cómo se puede hacer? Alguna sugerencia?

Author: Fabian N., 2010-01-16

10 answers

Necesitará Javascript para hacer esto. Uso window.close():

close();

Nota: la pestaña actual está implícita. Esto es equivalente:

window.close();

O puede especificar una ventana diferente.

Así que:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

Con HTML:

<a href="javascript:close_window();">close</a>

O:

<a href="#" onclick="close_window();return false;">close</a>

Usted return false aquí para evitar el comportamiento predeterminado para el evento. De lo contrario, el navegador intentará ir a esa URL (que obviamente no es).

Ahora las opciones en el window.confirm() el cuadro de diálogo estará bien y se cancelará (no Sí y No). Si realmente quiere Sí y No, necesitará crear algún tipo de cuadro de diálogo modal de Javascript.

Nota: hay diferencias específicas del navegador con lo anterior. Si abrió la ventana con Javascript (a través de window.open()), entonces se le permite cerrar la ventana con javascript. Firefox no te permite cerrar otras ventanas. Creo que IE pedirá confirmación al usuario. Otros navegadores pueden variar.

 380
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-23 06:54:49

Prueba esto

<a href="javascript:window.open('','_self').close();">close</a>
 215
Author: Daniel Shen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-13 00:44:59

Este método funciona en Chrome e 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
Author: Palesz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-15 14:12:04

Por lo que puedo decir, ya no es posible en Chrome o FireFox. Todavía puede ser posible en IE (al menos pre-Edge).

 20
Author: Guy Schalnat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-10 02:39:34

Es posible. Busqué en toda la red para esto, pero una vez cuando tomé una de las encuestas de Microsoft, finalmente obtuve la respuesta.

Prueba esto:

window.top.close();

Esto cerrará la pestaña actual por usted.

 16
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-20 20:24:37

Probado con éxito en FF 18 y Cromo 24:

Insertar en la cabeza:

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML:

<a href="javascript:closeWindow();">Close Window</a>

Los créditos van a Marcos J. Drake .

 6
Author: Julesfrog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-11 15:15:31

Pruebe esto también. Trabajando para mí en los tres principales navegadores.

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
 6
Author: Bhavin Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-25 19:50:52

Las siguientes obras para mí en Chrome 41:

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

He intentado varias ideas para FF incluyendo la apertura de una página web real, pero nada parece funcionar. Por lo que entiendo, cualquier navegador cerrará una pestaña o ventana con xxx. close () si fue realmente abierto por JS, pero FF, al menos, no puede ser engañado para cerrar una pestaña abriendo nuevo contenido dentro de esa pestaña.

Eso tiene sentido cuando lo piensas : un usuario puede no querer que JS cierre una pestaña o ventana que tenga historia útil.

 6
Author: Thailandian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-01 09:39:48

Esta es una forma de resolver lo mismo, declare una función JavaScript como esta

<script>
  function Exit() {
     var x=confirm('Are You sure want to exit:');
     if(x) window.close();
   }
</script>

Agregue la siguiente línea al HTML para llamar a la función usando un <button>

<button name='closeIt' onClick="Exit()" >Click to exit </Button>
 0
Author: Mohsin Chaudhari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-17 10:37:13

Así es como crearías tal enlace:

<a href="javascript:if(confirm('Close window?'))window.close()">close</a>

 -2
Author: Eric Mickelsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-23 10:56:19