2016-03-15 2 views
0

У меня есть простое требование. Необходимо обновить родительскую страницу из дочернего окна после ее закрытия. Я открываю окно ребенка от события нажатия кнопки, как этогоlocation.reload event триггеры нажатия кнопок события

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 еще раз. Итак, снова появляется окно Child, и это происходит рекурсивно.

Как этого избежать? Я nbew для 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> 
Смежные вопросы