javascript - ventanas - ¿Cómo cerrar la pestaña actual en una ventana del navegador?
los scripts no pueden cerrar ventanas que no hayan sido abiertas por un script. (11)
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 haga clic en el enlace de cierre, aparecerá un mensaje de alerta que le pedirá 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 puede hacerse esto? ¿Alguna sugerencia?
Así es como crearías un enlace de este tipo:
<a href="javascript:if(confirm(''Close window?''))window.close()">close</a>
Es posible. Busqué en toda la red para esto, pero una vez que tomé una de las encuestas de microsoft, finalmente obtuve la respuesta.
prueba esto:
window.top.close();
Esto cerrará la pestaña actual para usted.
Esta es una forma de resolver lo mismo, declarar una función de 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>
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>
Intenta 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>
Los siguientes trabajos 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, incluida la apertura de una página web real, pero nada parece funcionar. Según tengo entendido, cualquier navegador cerrará una pestaña o ventana con xxx.close () si fue realmente abierto por JS, pero al menos FF no puede ser engañado para que cierre una pestaña abriendo nuevo contenido dentro de esa pestaña.
Eso tiene sentido cuando lo piensa: es posible que un usuario no quiera que JS cierre una pestaña o ventana que tenga un historial útil.
Por lo que puedo decir, ya no es posible en Chrome o FireFox. Todavía puede ser posible en IE (al menos pre-Edge).
Probado exitosamente en FF 18 y Chrome 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 para Marcos J. Drake .
Prueba esto
<a href="javascript:window.open('''',''_self'').close();">close</a>
un poco tarde pero esto es lo que descubrí ...
window.close()
solo funcionará (IE es una excepción) si la ventana que está intentando close()
se abrió mediante una secuencia de comandos utilizando el método window.open ().
obtendrá un error de consola: es posible que los scripts no cierren las ventanas que no fueron abiertas por el script. Como un error y nada más.
podría agregar un parámetro único en la URL para saber si la página se abrió desde un script (como el tiempo), pero es solo un truco y no una funcionalidad nativa y, en algunos casos, fallará .
No pude encontrar ninguna manera de saber si la página se abrió desde un open () o no, y close no arrojará errores. Esto NO imprimirá "prueba":
try{
window.close();
}
catch (e){
console.log("text");
}
Puedes leer en MDN más acerca de la función close ()
Necesitará Javascript para hacer esto. Utilice window.close()
:
close();
Nota: la pestaña actual está implícita. Esto es equivalente:
window.close();
o puede especificar una ventana diferente.
Asi 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>
Aquí return false
para evitar el comportamiento predeterminado para el evento. De lo contrario, el navegador intentará ir a esa URL (que obviamente no lo es).
Ahora las opciones en el cuadro de diálogo window.confirm()
estarán OK y Cancel (no Yes y No). Si realmente desea Sí y No, deberá 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 le permite cerrar otras ventanas. Creo que IE le pedirá confirmación al usuario. Otros navegadores pueden variar.