2012-05-23 68 views
9

Abrí una nueva ventana con window.open() para redirigir a los usuarios a la página de inicio de sesión de oauth. Sin embargo, después del inicio de sesión exitoso cuando el usuario se redirige a mi aplicación, la ventana anterior con la llamada window.open no se cierra en ios.window.close() no funciona en iOS

En el iPad cerraría la ventana incorrecta y en el iPhone no cerraría la ventana. El código funciona bien en Android y en las versiones de escritorio de Chrome y Firefox.

Después de mucho rooting, encontré una solución (publicada a continuación). Si alguien tiene mejores ideas o causas principales, publique aquí.

Respuesta

4

Después de buscar, encontré este tweet qué puestos una solución - https://twitter.com/#!/gryzzly/statuses/177061204114685952 por @gryzzly

copiado aquí en su totalidad

window.close() no funciona en iOS después window.open() ing o target = "_ blank"? hacer setTimeout (window.close, timeout); donde el tiempo de espera> 300.

Esto, junto con la eliminación de una .focus() en el que me centro en la ventana padre antes de cerrar la nueva ventana completamente resuelto el problema para mí.

+2

tweet poster aquí! mejor sugerencia es usar 'window.addEventListener (" load ", window.close);' –

+0

Pasé de ese proyecto, así que no estoy seguro de si realmente he intentado 'cargar' o no, pero eso hace sentido. Lo archivará para el futuro, ¡gracias! – JohnP

+2

esto no parece funcionar en safari iOS8 – walnutmon

6

aquí es lo que terminé poniéndome a trabajar ...
nunca pude hacer funcionar la función window.close; incluso en el setTimeout como se muestra arriba

Probé este artículo en:
        Windows XP: Chrome20, Firefox12, IE8
        de pan de jengibre Android: navegador de Android
        Android Ice Cream : navegador android, Firefox
        Ipad: navegador predeterminado (supongo que es un safari)
        Iphone 3GS y 4s: default


<SCRIPT LANGUAGE=\"JavaScript\"> 
    function refresh() { 
     var sURL = unescape("http://(some web page)/"); 
     window.location.replace(sURL); 
    } 
    function closeWindow() { 
     var isiPad = navigator.userAgent.match(/iPad/i) != null; 
     var isiPhone = navigator.userAgent.match(/iPhone/i) != null; 
     if (isiPad || isiPhone) { 
      setTimeout(\"refresh()\", 300); 
     } else { 
      window.close(); 
     } 
    } 
</SCRIPT> 

...... y el código html .......

<p><input class="bigbutton" type="button" name="cancel" id="cancel" value="Cancel" onClick="closeWindow()"></p> 

Cuestiones relacionadas