2009-07-01 54 views
3

有了一些javascript我的OpenUP一個彈出沒有概率使用關閉彈出窗口:如果存在

function myPopup2(x){ 
    if (x==1) 
    { 
     myWindow = window.open("timer.html", "", "height = 150, width = 300"); 
    }else 
    { 
     myWindow.close(); 
    } 
} 

我然後運行一些PHP腳本refreshs重新加載頁面。

當我以後再去關閉彈出窗口 - 它沒有,因爲頁面已被重載,myWindow變量不見了。 'myWindow'未定義是javascript錯誤。

任何人都知道我可以解決這個問題嗎?

回答

3

如果您在打開窗口時給出窗口名稱,稍後可以獲取窗口句柄。

function myPopup2(x){ 
    if (x==1) 
    { 
     myWindow = window.open("timer.html", "windowName", "height = 150, width = 300"); 
    }else 
    { 
     if (!myWindow) { 
      myWindow = window.open("", "windowName"); 
     } 
     myWindow.close(); 
    } 
} 
+0

這在FF 3.0.11中不起作用 – 2009-07-01 16:44:11

0

如這裏所概述:http://www.faqts.com/knowledge_base/view.phtml/aid/1460

window.open()採用第二參數,這是窗口的名稱。刷新時,您可以檢查該窗口的狀態並在必要時關閉它。作爲鏈接的討論,也沒有直接的方法來檢查刷新後的窗口,所以你必須做這樣的事情:

var win = window.open ('', 'windowName') 

,然後贏操作。

(編輯:我initally有涉及餅乾第二的想法,但我不認爲確實節省了你什麼,因爲你還要做上述訪問窗口)

-1

我想你可以「T。導致子窗口(timer.html)在刷新它時立即失去與父窗口的連接。如果您可以關閉另一個窗口中的每個窗口而不在兩者之間進行任何引用,那將非常可怕。

0

讓孩子窗口中執行的函數每隔幾秒鐘檢查父窗口爲信號應該關閉的標誌。父窗口可以在重新加載時設置標誌,而不是試圖追蹤子項。