2016-03-15 111 views
0

我有一個簡單的要求。一旦關閉,需要從子窗口刷新父頁面。我從一個按鈕單擊事件打開一個子窗口這樣location.reload事件觸發按鈕點擊事件

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。請幫幫我。

在此先感謝。

回答

0
 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>