window.close()在iOS上不起作用

Joh*_*hnP 10 javascript iphone ipad ios chrome-ios

我用window.open()打开一个新窗口,将用户重定向到oauth登录页面.但是,在成功登录后,当用户被重定向回我的应用程序时,带有window.open调用的上一个窗口不会在ios中自行关闭.

在iPad上,它会关闭错误的窗口,在iPhone上它根本不会关闭窗口.该代码适用于Android和桌面版Chrome和Firefox.

经过多次考虑,我发现了一个修复程序(如下所示).如果有人有任何更好的想法或根本原因,请在此处发布.

小智 6

这就是我最终开始工作的原因......
永远不能让window.close函数工作; 甚至在如上所示的setTimeout中

我测试了这个:
    Windows XP:Chrome20,Firefox12,IE8
    Android姜饼:Android浏览器
    Android冰淇淋:android浏览器,Firefox
    Ipad:默认浏览器(我假设它的safari)
    Iphone 3gs和4s:默认


<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>
Run Code Online (Sandbox Code Playgroud)

......和HTML代码.......

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


Joh*_*hnP 5

经过一番搜索,我发现这条推文发布了一条解决方法 - https://twitter.com/#!/gryzzly/statuses/177061204114685952 @gryzzly

完全复制到这里

在window.open()ing或target ="_ blank"之后,window.close()在iOS上不起作用?do setTimeout(window.close,timeout); 超时> 300.

这与.focus()在关闭新窗口之前删除我关注父窗口完全解决了我的问题一起.

  • 在这里推特海报!更好的建议是实际使用`window.addEventListener("load",window.close);` (2认同)
  • 这似乎不适用于iOS8 Safari (2认同)