2011-10-18 63 views
0

我发现需要开弹出窗口的照顾代码,我需要:关闭弹出窗口

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链接上打开。

回答

0

您在弹出窗口内显示的页面可能会附带一个事件处理程序bodyonunloadonbeforeunload(我认为这只是IE)。如果文档卸载(谁会猜到这个?),这将会触发。如果您不在文档中取消加载链接,则可以将此事件作为您的窗口已关闭的指示器。

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

var watcherID = setInterval(function() 
{ 
    if (Win.closed) 
    { 
    clearTimeout(watcherID); 
    // Do what you have to do. 
    } 
}, 400); 
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(); 
}