2011-12-23 43 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