Pregunta

Supongamos que quiero tener un enlace o un botón que, cuando el usuario haga clic en él, cierre el navegador sin ningún cuadro de diálogo de confirmación.

Debe funcionar en Internet Explorer 6, 7, 8 y Firefox.

¿Fue útil?

Solución

Investigué un poco y descubrí que no es posible cerrar una ventana / pestaña en Firefox si esa ventana / pestaña no está abierta a través de JavaScript o si la pestaña tiene páginas de historial > 1 (es decir, se puede hacer clic en el botón Atrás porque navega por las páginas web).

Forma de hacerlo en Firefox: primero elimine el historial. Luego puede cerrar la ventana sin el cuadro de confirmación. No he probado esta solución. Leí varias páginas confiables que describen cómo hacer esto.

Solución para Internet Explorer 6, 7, 8.

Con un poco de ayuda de la función de detección del navegador: http://www.quirksmode.org/js /detect.html , aquí se explica cómo cerrar la ventana sin el cuadro de confirmación para varias versiones de IE.

if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
        window.open('', '_self', '');
        window.close();
    } else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
        window.opener = null;
        window.close();
    } else {
        window.opener = '';
        window.close(); // attempt to close window first, show user warning message if fails
        alert("To avoid data corruption/loss. Please close this window immedietly.");
    }

Sé que algunos de ustedes podrían pensar que usar la detección del navegador no es una buena idea. Además, muchos creen que obligar a los usuarios a cerrar la ventana es algo malo. Estoy de acuerdo con esa idea. Pero, solo lo necesito debido a los requisitos de software que nos dicen que hagamos.

Espero que esto ayude.

Otros consejos

Eso sería una violación de seguridad importante. Nunca podrás hacer eso.

Sin embargo, puede cerrar las ventanas secundarias que el padre ha abierto. Supongamos que abrió una ventana emergente con una ventana principal, esa misma ventana principal puede tener un botón para cerrar el elemento secundario. Nunca el navegador.

Creo que parte del problema aquí es que no tienes claro cuál es tu objetivo en la pregunta. Según su comentario sobre la respuesta de Frankie, parece que realmente no necesita cerrar la ventana, simplemente necesita asegurar el contenido que estaba disponible en la ventana.

Esto es lo que recomiendo:

  1. Mata la sesión iniciada en función de un tiempo de espera (del lado del servidor). Cuando se agota el tiempo de espera, la recarga de la página solo debe redirigir a la página de inicio de sesión.
  2. En el lado del cliente, verifique periódicamente las condiciones de tiempo de espera y redirija a una página de inicio de sesión, o alguna otra página que no necesite ser protegida.

Francamente, por lo general, es mejor mantener a un usuario en su sitio hasta el momento en que, ellos quieren cerrar la pestaña o navegar de cualquier otra forma. Simplemente redirígelos a una página de destino que no necesita ser segura en lugar de intentar forzar el cierre de la pestaña.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top