多个弹出窗口的JavaScript问题

时间:2011-09-07 00:29:19

标签: javascript html5 javascript-events

我正在尝试为我的应用程序打开一个新的弹出窗口。每个弹出窗口都有一个窗口名称。假设用户关闭弹出窗口,他可以打开同名的弹出窗口。但是应该显示现有的弹出窗口。

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

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 个答案:

答案 0 :(得分: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文档非常有用。