2011-09-07 152 views
-2

我想为我的应用程序打开一个新的弹出窗口。每个弹出窗口都有一个窗口名称。假设用户关闭弹出窗口,他可以打开具有相同名称的弹出窗口,请显示现有的弹出窗口。多个弹出窗口的JavaScript问题

我写了下面的代码来做到这一点。但是,如果用户关闭它,则不会打开弹出窗口,否则会打开一个新的弹出窗口。请建议如何去与此。

d='javascript:if(document.getElementsByTagName("*").length>0&&document.getElementsByTagName("body")[0].innerHTML!=""&&!confirm("You are about to navigate to home page Do you want to do that ? ")) 
{opener.display2WindowHelp();} 
else 
{window.location.replace("${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}'+d+'"); 
}'; 
b= window.open(d,"_spor_window_"+a+window.location.hostname.replace(/\./g,""),"menubar=no,scrollbars=yes,height="+screen.availHeight+",width="+screen.availWidth+",left=0,top=0,resizable=yes,toolbar=no,location=no,status=no"); 
+1

你可以解开代码并使其可读吗?另外,所有这些弹出窗口都是必需的吗?为什么不像jQuery UI对话框那样? – David

回答

0

如果您需要打开任何弹出窗口,有可能有更好的方法来满足您的要求。如果你打开几个弹出窗口,那么你的设计需要一个彻底的审查(考虑你的工作流程以及标签界面是否是一个更好的选择)。

通常的策略是保存对每个窗口的引用,然后检查它是否仍然打开并可用于稍后重新使用,例如,

var popWin; 

function openWindow(url) { 
    var windowName = '...'; 
    var features = '...'; 

    if (!popWin || popWin.closed) { 
    popWin = window.open(url, windowName, features); 

    } else { 
    popWin.location.href = url; 
    } 
} 

如果你想打开多个窗口,那么你需要一个策略来跟踪你想要加载哪一个特定的资源。

您可能会发现HTML5 window(按名称创建和导航上下文)和MDN window.open文档有用。

+0

我也需要检查赢同名是否打开..所以我想我不能使用此.. –

+0

@T Nina - 如何保持你的所有窗口的数组,并通过阵列循环寻找匹配名称? – nnnnnn

+0

@T妮娜 - 我发布的内容并不意味着它是一个不错的粘贴解决方案,它是一个关于如何去做的暗示。正如nnnnnn所说,你需要保持对在数组或对象中打开的窗口的引用,并循环查看具有特定名称的窗口是否已经打开。如果是这样,请重复使用。如果没有,则打开一个新的数组并将其添加到数组或对象中(即“...用于跟踪要将特定资源加载到哪一个的策略”)。 – RobG