gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 09:11:00 25 4
gpt4 key购买 nike

全部!

我在原生 Android“浏览器”浏览器上遇到父/子窗口通信问题。 Safari、Chrome、Firefox、IE(!!!)、iOS,一切都好! Android v4.1.1,没那么多。

流程:

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

简单吧?

问题: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>

提前致谢!

最佳答案

正如您所建议的,父窗口似乎不知道子窗口何时关闭。但是,如果子窗口已关闭,则父窗口对它的引用此时将为 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()

关于Javascript:父/子 window.close 事件在 Android 原生浏览器中未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com