我注意到,当您使用Google Mail中的Google聊天功能时,您可以将聊天功能弹出到自己的窗口中。然后,当我关闭谷歌邮件窗口时,它警告说,如果我继续,然后显示窗口列表,其他窗口也将关闭。这是怎么做到的?是否可以跟踪您调用的窗口是否已关闭?
答案 0 :(得分:4)
是的,当您在JavaScript中执行window.open时,可以将其设置为var:
myWindow = window.open(...)
然后你可以将事件绑定到该窗口,如:
myWindow.onUnload = funcWindowClosed;
您可以通过将多个弹出窗口放入数组中来跟踪它们。
您还可以使用以下命令在子窗口(弹出窗口)中调用父窗口中的JavaScript函数。
window.opener
答案 1 :(得分:-2)
如果您为每个新窗口分配一个名称,当您将它们设置为弹出窗口,然后使用php(或其他任何内容)将窗口名称保存到cookie或会话时,您可以关闭由您创建的所有弹出窗口采取某项行动时的网站:
这就是我所做的(在php / js中):
function closePopups(){
var popups = Array();
<?
$i = 0;
if(isset($_SESSION['popups'])){
foreach($_SESSION['popups'] as $key=>$pop){
echo "popups[$i] = '$pop';\n";
$i++;
}
unset($_SESSION['popups']);
}
?>
for( i = 0; i < popups.length; i++ ){
window.open('',popups[i],'width=1,height=1').close();
}
}
在for循环中,你必须首先打开弹出窗口,然后关闭它,这样你当前窗口就可以看到是否已经打开了一个带有该名称的弹出窗口,如果是,那么它将关闭它。如果不是,它将创建一个具有相同名称的新窗口并立即将其关闭。
这就是我如何解决问题