Javascript:父/子窗口.close事件未在Android股票浏览器中启动

Javascript: parent/child window.close event not firing in Android stock browser

本文关键字:Android 浏览器 启动 事件 close 窗口 Javascript      更新时间:2023-09-26

all!

我在股票Android"浏览器"浏览器上的父/子窗口通信有问题。Safari,Chrome,Firefox,IE(!!(,iOS,一切都很好!安卓v4.1.1,没有那么多。

流程

  1. 从父窗口,我打开一个子窗口,并添加一个循环来侦听子窗口是否关闭
  2. 子窗口关闭,通知家长
  3. 父级清除循环,调用处理程序

很简单,对吧?

问题:Android可以从子级调用window.close(),但父级不知道关闭事件,即步骤3从未发生在打开子窗口时,javascript可能在父窗口中被挂起Javascript确实在父窗口中运行。这个问题是否有明确的解决方案或解决方法?

我的咖啡脚本

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>

提前感谢!

正如您所建议的,父窗口似乎不知道子窗口何时关闭。然而,如果子窗口已经关闭,则父窗口对它的引用在此时将为空,因此以下内容应在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()