2014-05-06 160 views
1

我想關閉所有打開的彈出窗口使用JavaScript。我嘗試了下面的代碼,但它沒有奏效。JavaScript:彈出式窗口立即關閉

這是我的代碼用於打開彈出窗口..

var childWindow = new Array(); 
function PopupCenter(pageURL, title, w, h) 
{  
    var left = (screen.width/2) - (w/2); 
    var top = (screen.height/2) - (h/2); 
    var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left); 
    childWindow[childWindow.length] = targetWin; 

    if (window.focus) { 
     targetWin.focus() 
    } 

    return false;  
} 

這是我關閉所有打開的彈出窗口代碼..

function CloseChildWindow() 
{ 
    if (childWindow.length != 0) 
    { 
     for (var i = 0; i < childWindow.length; i++) 
     { 
      childWindow[i].close(); 
     } 
    } 
} 

我調用該函數'CloseChildWindow()'在頁面的body onunload事件中。但是,當我嘗試打開彈出窗口時,它立即關閉,彈出窗口未完全打開。

我的代碼有什麼問題?

在此先感謝。

+0

那裏有很好的代碼。你可以提供一些jsfiddle隨機彈出窗口。 – SSS

+2

瀏覽器彈出式窗口攔截器? – OrangeDog

回答

0

彈出窗口必須由用戶單擊啓動。我假設這對你來說不是問題,因爲你看到一個彈出窗口,如果只有一秒鐘。這意味着瀏覽器不會阻止它。

但是,如果您是通過點擊鏈接進行此操作,則onunload事件將會觸發 ...即使頁面本身未被卸載!在開展一個特別雄心勃勃的項目時,我把這當作一個主要問題。

您可能需要做的是添加一個「不卸載」標誌,當打開彈出窗口並在setTimeout後清除時,該標誌將被設置。然後,您的onunload事件可以簡單地檢查該標誌,如果設置了則不做任何事情。