【问题标题】:location.reload event triggers the button click eventslocation.reload 事件触发按钮点击事件
【发布时间】:2016-07-01 06:52:12
【问题描述】:

我有一个简单的要求。关闭后需要从子窗口刷新父页面。我正在从这样的按钮单击事件中打开一个子窗口

ClientScript.RegisterStartupScript(this.GetType(), "showPage", "javascript:showPage();", true);

父页面中的javascript方法是

function showPage() {
        window.open("Page2.aspx", "Shan", "width=200,height=200,scrollbars=no");
    }

在子页面中我有

function refreshAndClose() {
        window.opener.location.reload();
        self.close();

        //window.opener.location.href = "Default.aspx"
        //self.close();
    }

并在

中调用它

<body onunload="refreshAndClose();">

现在它按预期工作,当我关闭子窗口时它调用父窗口的页面加载事件,但它也进入按钮单击事件(我通过它调用子窗口的按钮单击事件)并执行 javascript 方法再次。因此,子窗口再次出现,并且递归进行。

如何避免这种情况?我对asp.net 很陌生。请帮帮我。

提前致谢。

【问题讨论】:

    标签: javascript c# asp.net


    【解决方案1】:
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "showPage", "javascript:showPage();", true);
                }
            }
    
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication4.WebForm3" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
            var myWindow;
            function showPage() {
                myWindow = window.open("Page2.aspx", "Shan", "width=200,height=200,scrollbars=no");
    
                setInterval(function () {
                    alert("ap");
                    if (!myWindow) {
                        document.getElementById("msg").innerHTML = "'myWindow' has never been opened!";
                    } else {
                        if (myWindow.closed) {
                            document.getElementById("msg").innerHTML = "'myWindow' has been closed!";
                            form1.submit();
                        } else {
                            document.getElementById("msg").innerHTML = "'myWindow' has not been closed!";
                        }
                    }
                }, 5000);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <div id="msg"></div>
            </div>
        </form>
    </body>
    </html>
    

    【讨论】: