ventanas ventana sido scripts script que pueden por los hayan funciona current close cerrar automaticamente abrir abiertas javascript browser browser-detection browser-feature-detection

javascript - ventana - window.close jquery



¿Cómo puedo detectar mediante programación cómo maneja un navegador window.close()? (3)

Diferentes navegadores web manejan la función window.close () de manera diferente. IE solicita confirmación al usuario, mientras que Firefox y Safari simplemente no lo respetan, a menos que la ventana se haya abierto originalmente con Javascript y muestre un mensaje que dice tanto en la consola.

Una aplicación web de terceros utilizada internamente en nuestra organización que yo apoyo muestra un botón ''cerrar'' al final de una serie de páginas tipo asistente. Esto funciona bien para IE, que es lo que utilizan la mayoría de nuestros usuarios. Sin embargo, esto obviamente falla en FF. Preferiría dejar el botón y usar Javascript para degradar con gracia la UI al no mostrar ese botón en ningún navegador que no ejecute la ventana.close ().

Como regla general, trato de verificar la capacidad del navegador en lugar de confiar en una política codificada según la detección del navegador siempre que sea posible. ¿Hay alguna manera de verificar programáticamente el soporte para window.close () para que pueda determinar si el botón debería mostrarse en primer lugar?


Muy simple. Su script debe probar (o try ) window.close , y si aún está activo después de eso, intente: muestre el mensaje y, opcionalmente, borre / reemplace el contenido de la página, o use location.reload para que los usuarios no tengan ningún motivo para quedarse. en la página más.

PD: tenga en cuenta que cerrar Windows desde JavaScript es muy descortés . Así que será mejor que tengas algunas buenas razones para hacerlo;)


Prueba esto:

Demostración: http://jsfiddle.net/ThinkingStiff/mnv87/

Guión:

function hasClose() { var close = window.open( '''', '''', ''height=100,width=100,left=3500'', false ); close.close(); return close.closed; }; if( hasClose() ) { //show button } else { //hide button };

Nota hasClose() también devolverá false si las ventanas emergentes están bloqueadas.


¿Por qué no verificar la compatibilidad y luego agregar si es compatible? Usando jQuery:

<script type="text/javascript" src="latest_jquery_file.js"></script> <script type="text/javascript"> $(document).on("ready", (function(e) { $("body").append(''<p><a href="#" id="windowcloser">Close The Window!!</a></p>''); $(''#windowcloser'').click(function(){ window.close(); }); }) ); </script>

Como jQuery es compatible con varios navegadores, debería