如何知道javascript中关闭弹出窗口的时间

时间:2010-10-02 16:19:30

标签: javascript popup window.open onunload

此代码将在弹出窗口中打开go.com:

<a href="javascript:void(0)" onClick="javascript:window.open('http://go.com','','status=yes,scrollbars=yes,toolbar=no,menubar=no,location=no ,width=300px,height=300px')">open</a>

我希望在主页面中使用alert('closed!'),当弹出窗口关闭时我无法编辑弹出页面以便使用onunload="alert('closed!')",因为弹出页面是外部页面而我不能改变代码,如

var mywindow = window.open('http://go.com') ...

感谢。

3 个答案:

答案 0 :(得分:1)

如果不是直接在窗口中加载该外部页面,而是打开一个带有包含外部页面内容的iframe的“本地”窗口?这样你仍然可以对实际窗口进行足够的控制,以便能够判断它何时关闭。

一些缺点:地址栏不会显示他们正在浏览的网址,如果go.com有某种框架破坏代码,它也可能会中断。

一些示例代码:

function openIFrameInWindow(url) {
    var myWindow = window.open("");

    var iframe = document.createElement("iframe");
    iframe.src = url;

    myWindow.document.body.appendChild(iframe); 

    myWindow.document.body.onbeforeunload = function () { alert("WINDOW CLOSED") }; 
}

<a href="javascript:void(0)" onClick="javascript:openIFrameInWindow('http://go.com')">open</a>

答案 1 :(得分:0)

如何每隔1秒检查一次窗口状态,看它是否已关闭?示例代码,未经测试:

var mywindow= window.open();
checkmywindow();

function checkmywindow()
{
   if(mywindow.closed)
   {
      //code when popup is closed
   }
   else
   {
      setTimeout("checkmywindow();", 1000);
   }
}

答案 2 :(得分:0)

当关闭弹出窗口时,您可以使用window.opener属性向开启窗口INFORM。

所以:

//pseudocode in pop-up window
onClose() {
 window.opener.popUpClosed = true;
}

现在在打开popUp的页面中,您可以检查popUpClosed变量的值。

有关开启者物业的更多信息: http://www.webreference.com/js/tutorial1/opener.html