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 de cierre, 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, en caso negativo, no haga nada.
¿Cómo puede hacerse esto? ¿Alguna sugerencia?
javascript
html
hyperlink
Naveed
fuente
fuente
Respuestas:
Necesitará Javascript para hacer esto. Uso
window.close()
:Nota: la pestaña actual está implícita. Esto es equivalente:
o puede especificar una ventana diferente.
Entonces:
con HTML:
o:
usted
return false
aquí para evitar el comportamiento predeterminado del evento. De lo contrario, el navegador intentará ir a esa URL (que obviamente no es).Ahora las opciones en el
window.confirm()
cuadro de diálogo serán Aceptar y Cancelar (no Sí 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 (vía
window.open()
), entonces puede 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.fuente
about:config
dom.allow_scripts_to_close_windows = true
podría ser la solución en Firefox (podría ser un gran riesgo para la seguridad!)<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
consulte también este artículoPrueba esto
fuente
Este método funciona en Chrome e IE:
fuente
open(location, '_self').close();
Por lo que puedo decir, ya no es posible en Chrome o FireFox. Todavía puede ser posible en IE (al menos pre-Edge).
fuente
<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
consulte también este artículoEs posible. Busqué esto en toda la red, pero una vez cuando tomé una de las encuestas de Microsoft, finalmente obtuve la respuesta.
prueba esto:
esto cerrará la pestaña actual por ti.
fuente
Probado con éxito en FF 18 y Chrome 24:
Insertar en la cabeza:
HTML:
Los créditos van a Marcos J. Drake .
fuente
Prueba esto también. Trabajando para mí en los tres principales navegadores.
fuente
Lo siguiente funciona para mí en Chrome 41:
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 realmente fuera 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 tiene un historial útil.
fuente
Perdón por la necroposición de esto, pero recientemente implementé un sitio alojado localmente que necesitaba la capacidad de cerrar la pestaña actual del navegador y encontré algunas soluciones interesantes que no están bien documentadas en ningún lugar que pude encontrar, así que me encargué de hacerlo.
Nota: Estas soluciones se realizaron teniendo en cuenta un sitio alojado localmente y (con la excepción de Edge) requieren que el navegador esté configurado específicamente, por lo que no sería ideal para sitios alojados públicamente.
Contexto: en el pasado, el script jQuery
window.close()
podía cerrar la pestaña actual sin problemas en la mayoría de los navegadores. Sin embargo, los navegadores modernos ya no admiten este script, posiblemente por razones de seguridad.Google Chrome:
Chrome no permite que se ejecute el script window.close () y no sucede nada si intentas usarlo. Sin embargo, al usar el complemento TamperMonkey de Chrome, podemos usar el método window.close () si incluye el
// @grant window.close
encabezado UserScript de TamperMonkey.Por ejemplo, mi script (que se activa cuando se hace clic en un botón con id = 'close_page' y si se presiona 'yes' en la ventana emergente del navegador) se ve así:
Nota: Sin embargo, esta solución solo puede cerrar la pestaña si NO es la última pestaña abierta. Entonces, efectivamente, no puede cerrar la pestaña si hace que la ventana se cierre al ser la última pestaña abierta.
Firefox
Firefox tiene una configuración avanzada que puede habilitar para permitir que los scripts cierren ventanas, lo que habilita efectivamente el
window.close()
método. Para habilitar esta configuración, vaya a aproximadamente: config, luego busque y encuentre la preferencia dom.allow_scripts_to_close_windows y cambie de falso a verdadero.Esto le permite usar el
window.close()
método directamente en su archivo jQuery como lo haría con cualquier otro script.Por ejemplo, este script funciona perfectamente con la preferencia establecida en verdadero:
Esto funciona mucho mejor que la solución alternativa de Chrome, ya que permite al usuario cerrar la pestaña actual, incluso si es la única pestaña abierta, y no requiere un complemento de terceros. Sin embargo, el único inconveniente es que también permite que este script sea ejecutado por diferentes sitios web (no solo en el que tiene la intención de usar), por lo que podría ser un peligro para la seguridad, aunque no puedo imaginar que cerrar la pestaña actual sea particularmente peligroso.
Borde:
Decepcionantemente Edge realmente realizó el mejor de los 3 navegadores que probé, y trabajé con el
window.close()
método sin requerir ninguna configuración. Cuandowindow.close()
se ejecuta el script, una ventana emergente adicional le avisa que la página está intentando cerrar la pestaña actual y le pregunta si desea continuar.Nota final: Las soluciones para Chrome y Firefox son soluciones para algo que los navegadores deshabilitaron intencionalmente, posiblemente por razones de seguridad. Ambos también requieren que el usuario configure sus navegadores para que sean compatibles de antemano, por lo que probablemente no sean viables para sitios destinados al uso público, pero son ideales para soluciones alojadas localmente como la mía.
Espero que esto haya ayudado! :)
fuente
En cuanto a las personas que todavía visitan esta página, solo se le permite cerrar una pestaña que se abre mediante un script O mediante el uso de la etiqueta de anclaje de HTML con target _blank. Ambos pueden cerrarse usando el
fuente
esto hizo el trabajo por mí
fuente
un poco tarde pero esto es lo que descubrí ...
window.close()
solo funcionará (IE es una excepción) si la ventana que está intentandoclose()
abrir se abrió mediante un script utilizando el método window.open ().(por favor vea el comentario de @killstreet a continuación sobre la etiqueta de anclaje con el objetivo _blank)
TLDR : Chrome y Firefox permiten cerrarlos.
obtendrá un error de consola: los scripts pueden no cerrar 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 time), pero es solo un truco y no una funcionalidad nativa y fallará en algunos casos.
No pude encontrar ninguna manera de saber si la página se abrió desde open () o no, y cerrar no arrojará errores. esto NO imprimirá "prueba":
puedes leer en MDN más sobre la función close ()
fuente
Así es como crearía un enlace de este tipo:
<a href="javascript:if(confirm('Close window?'))window.close()">close</a>
fuente
Esta es una forma de resolver lo mismo, declarar una función de JavaScript como esta
Agregue la siguiente línea al HTML para llamar a la función usando un
<button>
fuente