关闭弹出窗口

时间:2011-10-18 11:20:28

标签: javascript window

我找到了一个代码,负责打开我需要的弹出窗口:

 function winOpen(theURL, Name, popW, popH, scroll) { // V 1.0
 var winleft = (screen.width - popW) / 2;
 var winUp = (screen.height - popH) / 2;
 winProp =
'width='+popW+',height='+popH+',left='+winleft+',t op='+winUp+',scrollbars='+scroll+','
  Win = window.open(theURL, Name, winProp)
    if (parseInt(navigator.appVersion) >= 4){
      Win.window.focus();
   }

是否可以在此处包含在窗口关闭时提交的函数,或者是否需要在某处单独调用函数?我在html链接上打开窗口。

2 个答案:

答案 0 :(得分:0)

您在弹出窗口中显示的页面可能会有一个事件处理程序附加到body的{​​{1}}或onunload(我认为这只是IE)。如果文档卸载(谁会猜到?),那将触发。如果您没有在文档中删除将要卸载它的链接,您可以将此事件作为窗口已关闭的指示。

第二种可能性:添加看门狗。

onbeforeunload

答案 1 :(得分:0)

您应该稍微缩进代码以使其更具可读性。此外,您可以使用win.closed查看其已关闭onunload,但请务必在检查前稍等一下:http://jsfiddle.net/9PYWj/

function winOpen(theURL, Name, popW, popH, scroll) { // V 1.0
    var winleft = (screen.width - popW) / 2,
        winUp   = (screen.height - popH) / 2,

        winProp = 'width=' + popW 
                   + ',height=' + popH 
                   + ',left=' + winleft 
                   + ',top=' + winUp 
                   + ',scrollbars=' + scroll + ',',

        win     = window.open(theURL, Name, winProp);

    win.onunload = function() {
        setTimeout(function() {
            if(win.closed) {
                alert(123);
            }
        }, 100);
    };

    win.focus();
}