gpt4 book ai didi

javascript - 检测从父项(开启者)关闭的新选项卡

转载 作者:行者123 更新时间:2023-11-29 18:14:30 29 4
gpt4 key购买 nike

我已经阅读了很多帖子,但似乎没有一个能准确回答我的问题。

是否可以检测到由 target="_blank" 属性打开的选项卡关闭?

我需要打开一个新的标签页/窗口,用户将选择一个选项,然后标签页关闭。

当该选项卡关闭时,我需要刷新原始窗口(父窗口或打开窗口)。

有什么想法吗?

编辑:

进一步说明

我有一个应用程序可以在 iframe 中打开另一个应用程序。在 iframe 中打开的应用程序连接到社交媒体以发布共享。打开的新选项卡用于身份验证/oauth 舞蹈。在主窗口中打开的页面显示已连接的帐户并允许您连接新帐户(在 iframe 的主窗口中)。身份验证/oauth 打开一个新窗口/选项卡进行舞蹈,然后它自己关闭。我需要父窗口(其中包含 iframe 的主窗口)知道新选项卡/窗口已关闭,以便它可以刷新内容并反射(reflect)新连接。

最后的注释我使用了多种身份验证方法,所以以上内容确实无关紧要。

我只需要找到一种方法来监视已打开的新选项卡/窗口,甚至让新窗口/选项卡触发浏览器事件 onunload 到父/主窗口知道它关闭以便它可以刷新。

最佳答案

因此,如果有人感兴趣,这就是我目前的工作方式,直到找到更好的解决方案。

首先,我所做的是让 javascript 打开我的窗口,方法是将它分配给一个变量,这样它就有一个引用名称。

var checkWindow = false;
var fbAuthWindow;

function openFBAuth(url) {
fbAuthWindow=window.open(url);
checkWindow = true;
setTimeout(function() { checkAuthWindow('fb'); }, 1000);
}

这还设置了一个超时,每秒运行一次,同时 checkWindow == true 检查窗口是否关闭。如果窗口关闭(我的脚本在身份验证完成时关闭窗口),则页面会重新加载,最终将 checkWindow 设置回 false。

function checkAuthWindow(win){
if(checkWindow == true){
if(win == 'fb'){
if(fbAuthWindow.closed){
window.location.reload();
} else {
setTimeout(function() { checkAuthWindow('fb'); }, 1000);
}
}
}
}

每秒检查一次窗口并不是最好的做法,也不是最佳做法,但目前它会起作用,直到我找到更好的解决方案。

关于javascript - 检测从父项(开启者)关闭的新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592827/

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