一次显示一个弹出窗口

时间:2015-10-13 10:14:35

标签: javascript jquery html

如何一次只显示一个弹出窗口?

我创建了一个名为parent.html的页面。在父页面上,我有两个链接,一个是注册,另一个是登录。 如果我点击注册然后注册页面打开作为子窗口 但 如果我点击登录然后已经打开子框(注册)应该关闭,登录子窗口应该打开或所有以前打开的子框应该消失。

我的代码如下

<input type="button" value="login" onclick="ShowPopup('login.asp')" />
<script type="text/javascript">
 var popup;
    function ShowPopup(url) {
        popup = window.open(url, "self", "toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
        popup.focus();
    }
</script>
</form>

<input type="button" value="register" onclick="ShowPopup('register.asp')" />
<script type="text/javascript">
    var popup;
    function ShowPopup(url) {
        popup = window.open(url, "self", "toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
        popup.focus();
    }
</script>
</form>

我更换了#34; popup&#34;用&#34; self&#34;。现在,一次只打开一个子窗口,而不是多个并且工作正常。

但是当我关闭子窗口时,父页面不会刷新。

子窗口代码如下

<form id="form1" runat="server">
<input type="button" value="Refresh Parent" onclick="RefreshParent()" />
<script type="text/javascript">
    function RefreshParent() {
        if (window.opener != null && !window.opener.closed) {
            window.opener.location.reload();
        }
    }
    window.onbeforeunload = RefreshParent;
</script>
</form>

请帮帮我

2 个答案:

答案 0 :(得分:0)

首先,没有必要定义变量&amp;功能再次..现在解决方案 -

<script type="text/javascript">
 var popup;
    function ShowPopup(url) {
        if(popup)
        {
         popup.close();
        }
        popup = window.open(url, "Popup", "toolbar=no,scrollbars=no,location=no,statusbar=no,
                menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
        popup.focus();
    }
</script>

在您的子页面中,头部分(在关闭时刷新父窗口)

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        if(window.opener)
          window.opener.location.reload(true);
    }
</script>

默认情况下,reload()方法从缓存中重新加载页面,但您可以通过将参数传递给true来强制它从服务器重新加载页面。

- 或 -

您可以在打开子窗口时查看父窗口中的一些代码,并在其关闭刷新时查找其子窗口。

<script type="text/javascript">
     var popup;
     var lookupTimer=null;
        function ShowPopup(url) {
            if(popup)
            {
             popup.close();
            }
            popup = window.open(url, "Popup", "toolbar=no,scrollbars=no,location=no,
            statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
            popup.focus();
            lookupTimer = setInterval(function(){ loolUpChild(); }, 1000);
        }
    function loolUpChild()
    {
        if((popup.closed))
                {
                 window.location.reload(true);
                 clearInterval(lookupTimer);
                }   

    }
    </script>

答案 1 :(得分:0)

创建一个全局变量,并在先前的弹出窗口打开然后先关闭并打开新的时保持你的旗帜 像

 if(popup){
        popup.close();
        popup=false;
    }

之后打开新的

window.open(url, "Popup", "toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
    popup = true;