2011-03-02 87 views
1

我注意到当您使用Google Mail的Google Chat功能时,您可以将聊天窗口弹出到其自己的窗口中。然后,当我关闭Google Mail窗口时,它警告说,如果我继续并显示窗口列表,则其他窗口也将被关闭。这是如何完成的?是否有可能跟踪您调用的窗口是否已关闭?浏览器如何或有可能跟踪弹出式窗口

回答

4

是的,当你做一个JavaScript window.open,你可以将其设置为像一个变种:

myWindow = window.open(...) 

然后,你可以将事件绑定到窗口,如:

myWindow.onUnload = funcWindowClosed; 

你可以通过将它们放入数组来跟踪多个弹出窗口。

您也可以使用调用父窗口的JavaScript函数由子(弹出)窗口:

window.opener 
-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循环中,您必须首先打开弹出窗口,然后关闭它,以便当前窗口可以查看带有该名称的弹出窗口是否已打开,如果是,则会关闭它。如果不是,它将创建一个具有相同名称的新窗口并立即关闭它。

我这是怎么soleved问题

+0

这并不让我检查,如果他们虽然开放。因此,您无法警告用户他们即将关闭 – Spidy 2011-03-02 18:12:11

+0

您可以在var弹出窗口之前添加一个确认警报模式以确认他们是否要关闭弹出窗口,如果他们这样做,那么运行其余部分该函数,否则返回页面 – Neal 2011-03-02 18:21:42

+0

我认为这是不好的做法,生成这样的js代码。你有我的downvote。 – Angel 2013-03-01 09:11:06

相关问题