2011-12-23 62 views
13

孩子失去了父母!打開窗口調用函數

我有一個父窗口,當有人點擊圖像時,JS彈出窗口打開並顯示照片及其信息。

要關閉彈出/子窗口,和我的父/首戰窗口上閃爍的元素,我一直在使用這個功能:

function closeWindow() { 
    var currentID = document.getElementById('currentID').value; 
    window.opener.flashElement(currentID); 
    window.close(); 
} 

我的問題是這樣的,如果我的用戶瀏覽不起作用遠離最初打開的彈出頁面。例如,在彈出窗口中,有下一個和上一個按鈕可以滾動瀏覽該組結果中的單個照片,這些照片會使用新的查詢字符串值重新加載頁面。

如果我的用戶滾動(重裝頁)不到7倍也沒關係,但如果他們滾動不止於此,在window.opener功能不起作用,正因爲如此,在window.close功能不要麼!

我可能會重建頁面,所以數據通過AJAX調用而不是重新加載頁面,但這是我需要做的很多工作。

任何想法?

+0

什麼時候調用closeWindow()函數?當用戶點擊「關閉」按鈕或類似的東西?爲了完全清楚,'closeWindow()'在子窗口中,對嗎? – 2011-12-23 01:31:35

+0

[Popup Window.Opener重定向或關閉]的可能重複(http://stackoverflow.com/questions/5872721/popup-window-opener-redire-or-closed) – 2011-12-23 01:33:03

+0

@JackieChiles yes當用戶調用closeWindow()時點擊關閉按鈕,closeWindow()位於子窗口中。正如我所說,如果用戶不重新加載彈出超過7-8次,它工作正常。 – TheCarver 2011-12-23 01:38:18

回答

12

我的猜測是,

window.opener.flashElement(currentID); 

拋出一個錯誤,或功能不存在。很可能具有currentID值的元素在頁面上不存在。嘗試捕捉錯誤。

function closeWindow() { 
    var currentID = document.getElementById('currentID').value; 
    try { 
     window.opener.flashElement(currentID); 
    } catch (err) { 
     alert(err.description || err) //or console.log or however you debug 
    } 
    window.close(); 
} 
+0

實際上幫了很多忙的權利。我發現currentID值是空的,所以它在父頁面的函數中導致了一個錯誤。但是這仍然無法解釋爲什麼currentID在第一位失蹤。這是一個隱藏的文本字段,由ASP用photoID填充。如果photoID不存在,頁面將無法加載!奇怪!! – TheCarver 2011-12-23 02:35:53