2011-10-18 315 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(); 
}