¿Cómo puedo cerrar una ventana del navegador sin recibir el mensaje "¿Quiere cerrar esta ventana"?


86

¿Cómo puedo cerrar una ventana del navegador sin recibir el mensaje ¿Desea cerrar esta ventana ?

El mensaje aparece cuando uso la window.close();función.


22
más fácil:window.open('','_self').close()
markasoftware

En Firefox, todo esto puede ser discutible si el usuario deshabilita el cierre de la ventana. kb.mozillazine.org/…
Brian

3
A menos que usted mismo sea el propietario de la ventana, no debería hacerlo.
Robert Harvey

Respuestas:


85
window.open('', '_self', ''); window.close();

Esto funciona para mi.


Funciona para IE11, Safary 5.1.7, pero no funciona en FF y Chrome.
nikolai.serdiuk

Trabajando en Firefox 38.0.5 y Chrome 43
justanotherprogrammer

¿Qué pasa si la ventana se abre usando showModalDialog? No funciona en IE10
bjan

No estoy seguro de si esto funciona en todos los navegadores, ¡pero funciona en IE11! Cuál es el navegador para el que tenemos que construir, actualmente. Gracias por esta respuesta, me ahorraste muchos problemas.
CrazyPaste

Funciona bien en IE 11, Chrome 76.0.3809, Firefox 69.0
Rahul Mahadik

57

Amigo mío ... hay una forma pero "hack" no empieza a describirla. Básicamente, debes aprovechar un error en IE 6 y 7.

¡Funciona todo el tiempo!

En lugar de llamar window.close(), redirige a otra página.

Página de apertura:

alert("No whammies!");
window.open("closer.htm", '_self');

Redirigir a otra página. Esto engaña a IE para que le permita cerrar el navegador en esta página.

Página de cierre:

<script type="text/javascript">
    window.close();
</script>

Impresionante, ¿eh?


1
Sé que ya han pasado 2 años. Pero es increíble ... Funciona en IE 8 y firefox 15
Susie

9
Parece que Microsoft ha solucionado este error en IE10. ¿Alguien sabe cómo podemos lograr esto en IE10?
Abhi Rampal

Tanto self.close () como window.close () no funcionan para IE de mi lado. Sin embargo, Chrome, FF y Safari están bien
NoName

57

Los scripts no pueden cerrar una ventana que abrió un usuario. Esto se considera un riesgo de seguridad. Aunque no está en ningún estándar, todos los proveedores de navegadores lo siguen ( documentos de Mozilla ). Si esto sucede en algunos navegadores, es un error de seguridad que (idealmente) se repara muy rápidamente.

Ninguno de los trucos en las respuestas a esta pregunta ya funciona, y si a alguien se le ocurre otro truco sucio, eventualmente también dejará de funcionar.

Le sugiero que no desperdicie energía luchando contra esto y adopte el método que el navegador le brinda tan amablemente: pregunte al usuario antes de que aparentemente bloquee su página.


5
O, incluso más simple: no cierres la ventana en absoluto. Si ha terminado, envíe al usuario de regreso a su página de inicio oa algún otro tipo de ubicación central.
anochecer-inactivo-

2
@duskwuff, estamos realizando pruebas automatizadas con estos navegadores. Necesitan cerrar .
ouflak

2
@ouflak Seguramente su marco de pruebas tiene alguna forma de manipular las ventanas.
anochecer-inactivo-

1
@duskwuff ¿Qué pasa con las bibliotecas de terceros que dejan las ventanas por ahí? Seguramente no puede estar sugiriendo que deje ese lío para el usuario o que lo redireccione a una vista (duplicada) de la página de inicio.
Carrito abandonado

1
¿Podría explicar también en su respuesta como nota a pie de página por qué es un riesgo para la seguridad?
T.Todua

31

Aquí está la función de Javascript que utilizo para cerrar el navegador sin aviso o advertencia, también se puede llamar desde Flash. Debe estar en un archivo html.

    function closeWindows() {
         var browserName = navigator.appName;
         var browserVer = parseInt(navigator.appVersion);
         //alert(browserName + " : "+browserVer);

         //document.getElementById("flashContent").innerHTML = "<br>&nbsp;<font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";

         if(browserName == "Microsoft Internet Explorer"){
             var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;  
             if (ie7)
             {  
               //This method is required to close a window without any prompt for IE7 & greater versions.
               window.open('','_parent','');
               window.close();
             }
            else
             {
               //This method is required to close a window without any prompt for IE6
               this.focus();
               self.opener = this;
               self.close();
             }
        }else{  
            //For NON-IE Browsers except Firefox which doesnt support Auto Close
            try{
                this.focus();
                self.opener = this;
                self.close();
            }
            catch(e){

            }

            try{
                window.open('','_self','');
                window.close();
            }
            catch(e){

            }
        }
    }

En IE 10.0.9200, abrir la ventana usando showModalDialog. Encendido closeWindows, abre una nueva ventana (la misma página) mientras que la anterior sigue abierta.
bjan

No funcionó en Firefox, IE / Edge mostró un mensaje de confirmación, aunque funcionó en Chrome.
Dymas

12

Esto funciona en Chrome 26, Internet Explorer 9 y Safari 5.1.7 ( sin el uso de una página de ayuda, ala respuesta de Nick):

<script type="text/javascript">
    window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>

El anidado window.openes para que IE no muestre el mensaje ¿Desea cerrar esta ventana ?

Desafortunadamente, es imposible que Firefox cierre la ventana.


Trabajó para IE 10 también.
Mukus

11

En la etiqueta del cuerpo:

<body onload="window.open('', '_self', '');">

Para cerrar la ventana:

<a href="javascript:window.close();">

Probado en Safari 4.0.5, FF para Mac 3.6, IE 8.0 y FF para Windows 3.5


Eso es funcionalmente lo mismo que hizo Nick.
naugtur

Si. Si estoy leyendo la publicación de Nick correctamente, sugiere una redirección antes de llamar a window.close. Lo que publiqué es si no desea utilizar una redirección. Si interpreto mal las disculpas de la publicación de Nick.
JimB

7

Por razones de seguridad, una ventana solo se puede cerrar en JavaScript si fue abierta por JavaScript. Para cerrar la ventana, debe abrir una nueva ventana con _selfcomo destino, que sobrescribirá su ventana actual, y luego cerrará esa (lo que puede hacer ya que se abrió a través de JavaScript).

window.open('', '_self', '');
window.close();

esto funcionó para mí con Silverlight: HtmlPage.Window.Eval ("window.open ('', '_self', ''); window.close ();");
Mike Fuchs

6

Desde aqui :

<a href="javascript:window.opener='x';window.close();">Close</a>

Necesita establecer window.openeralgo, de lo contrario se queja.


Funciona para mí, casi 7 años después en Chrome, FF e IE 10.
Mike Devenney

6

window.open('', '_self', '').close();

Lo siento un poco tarde aquí, pero encontré la solución, al menos para mi caso. Probado en Safari 11.0.3 y Google Chrome 64.0.3282.167


5

Debido a las mejoras de seguridad en IE, no puede cerrar una ventana a menos que sea abierta por un script. Entonces, la forma de evitar esto será dejar que el navegador piense que esta página se abre usando un script y luego cerrar la ventana. A continuación se muestra la implementación.

Prueba esto, ¡funciona de maravilla!
javascript cierra la ventana actual sin pedir IE

<script type="text/javascript">
function closeWP() {
 var Browser = navigator.appName;
 var indexB = Browser.indexOf('Explorer');

 if (indexB > 0) {
    var indexV = navigator.userAgent.indexOf('MSIE') + 5;
    var Version = navigator.userAgent.substring(indexV, indexV + 1);

    if (Version >= 7) {
        window.open('', '_self', '');
        window.close();
    }
    else if (Version == 6) {
        window.opener = null;
        window.close();
    }
    else {
        window.opener = '';
        window.close();
    }

 }
else {
    window.close();
 }
}
</script>

javascript cierra la ventana actual sin pedir IE


2

Crea una función de JavaScript

<script type="text/javascript">
    function closeme() {
        window.open('', '_self', '');
        window.close();
    }
</script>

Ahora escriba este código y llame a la función JavaScript anterior

<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>

O simplemente:

<a href="" onclick="closeme();">close</a>

2

Esto funcionará:

<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>

Trabajó usando la implementación de Chrome de Python Eel.
revliscano


0

El navegador se queja porque está usando JavaScript para cerrar una ventana que no se abrió con JavaScript, es decir window.open('foo.html');.


0

La mejor solución que he encontrado es:

this.focus();
self.opener=this;
self.close();

0

Coloque el siguiente código en ASPX.

<script language=javascript>
function CloseWindow() 
{
    window.open('', '_self', '');
    window.close();
}
</script>

Coloque el siguiente código en el código detrás del evento de clic del botón.

string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";

Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);

Si no tiene ningún procesamiento antes del cierre, puede poner directamente el siguiente código en el ASPX en la etiqueta de clic del botón.

OnClientClick="CloseWindow();"

Espero que esto ayude.


Las preguntas piden una solución javascript simple, evite ASPX.
Zeeshan

@Zeeshan: Cualquier desarrollador que se precie puede ver que el JavaScript en la parte superior de la publicación de Kamleshkumar Gujarathi se puede aplicar a sus propios requisitos. Un toque severo si rechazaras su respuesta.
Paul

0

En mi situación, el siguiente código estaba incrustado en un archivo php.

var PreventExitPop = true;
function ExitPop() {
  if (PreventExitPop != false) {
    return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
  }
}
window.onbeforeunload = ExitPop;

Entonces abrí la consola y escribí lo siguiente

PreventExitPop = false

Esto resolvió el problema. Entonces, averigüe el código JavaScript y busque la (s) variable (s) y asígnelas a un "valor" apropiado que en mi caso era "falso".


-3

Voy a publicar esto porque esto es lo que estoy usando actualmente para mi sitio y funciona tanto en Google Chrome como en IE 10 sin recibir ningún mensaje emergente:

<html>
    <head>
    </head>
    <body onload="window.close();">
    </body>
</html>

Tengo una función en mi sitio que quiero ejecutar para guardar una variable de activación / desactivación en la sesión sin ir directamente a una nueva página, así que abro una pequeña página web emergente. Luego, esa página web se cierra automáticamente con la onload="window.close();"función.


Sí: pero como información stackoverflow.com/a/24854246/2239406 : abre la ventana en javascript, luego puede cerrar con javascript.
Denis Chenu

bueno, si no se supone que funcione, y si ha sido "parcheado", todavía funciona en todos los navegadores de mi PC sin falta. Simplemente estaba proporcionando una solución que actualmente me estaba funcionando.
Logan Hasbrouck

La diferencia es: abres la ventana en JS. Si la ventana no se abre en JS: no funciona.
Denis Chenu

No, no estoy usando JS para abrir la ventana; en lugar de eso, estoy usando un awith target=_blankpara abrir una pequeña ventana emergente en una URL específica, luego finalmente uso JS para cerrar la ventana. Su propósito es que la URL específica guarde un valor en la sesión para deshabilitar las imágenes de fondo, aunque aquí pronto la eliminaré a favor de ajax una vez que descubra cómo hacer ajax. (todavía aprendiendo las cuerdas persay)
Logan Hasbrouck
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.