Javascript:父/子window.close事件未在Android股票浏览器中触发

时间:2013-05-02 00:18:58

标签: javascript android dom

所有!

我在Android'浏览器'浏览器上遇到父/子窗口通信问题。 Safari,Chrome,Firefox,IE(!!!),iOS,都不错! Android v4.1.1,不是那么多。

流程

  1. 从父母那里,我打开一个子窗口,并添加一个循环来监听子窗口关闭。
  2. 关闭子窗口,通知父级。
  3. Parent清除循环,调用处理程序。
  4. 简单,对吧?

    问题:Android 可以从孩子那里调用window.close(),但是父母不知道关闭事件,即第3步永远不会发生。 在子窗口打开时,也许javascript在父级中被暂停? Javascript确实在父窗口中运行。这个问题有明确的解决方法或解决方法吗?

    我的CoffeeScript

    openTwitterAuthWindow: (authURL) =>
        @twitterWindow = window.open(authURL, "_blank", "width=550,height=420")
        @checkInterval = window.setInterval(@checkChildWindow, 500)
    
    checkChildWindow: () =>
        if (@twitterWindow && @twitterWindow.closed)
            alert("Excelsior!") # <-- Not called, unfortunately
            window.clearInterval(@checkInterval)
            @twGetLoginStatus()
    

    只在子窗口中使用javascript

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

    提前致谢!

1 个答案:

答案 0 :(得分:0)

正如您所建议的那样,父窗口似乎不知道子窗口何时关闭。但是,如果子窗口已关闭,则父节点对其的引用在该点将为null,因此以下内容应在Android中起作用:

openTwitterAuthWindow: (authURL) =>
    @twitterWindow = window.open(authURL, "_blank", "width=550,height=420")
    @checkInterval = window.setInterval(@checkChildWindow, 500)

checkChildWindow: () =>
    if (!@twitterWindow || @twitterWindow.closed)
        alert("Excelsior!")
        window.clearInterval(@checkInterval)
        @twGetLoginStatus()