0

У меня возникли проблемы с получением значения window.opener для передачи между дочерними всплывающими окнами. Этот код работает в IE 8 и порядке, но перестает работать в IE 9 и новее. Любой вход оценивается.

Разъяснено другим способом. Моя сестра знает, что я ее брат, но не верю, что я расскажу ей, кто наши родители.RegisterStartupScript заставляет window.opener быть нулевым

Process Flow:
окно Родитель (Основной вид) -> Открывает всплывающее окно (PopUp 1)
Пользователь нажимает на кнопку всплывающий 1, чтобы открыть всплывающее окно 2.
PopUp 2 открывает:
        Он извлекает данные из PopUp 1, затем закрывает PopUp 1
Пользователь нажимает кнопку (Сохранить) на PopUp 2.
PopUp 2 обновляет данные по исходному родительскому «Основная форма». Затем закрывается.

Последний шаг - это шаг, который не является happing IE 9. Я создал образец ниже, чтобы показать, как работает функция, используя чистый JavaScript, но не удается при публикации и использовании RegisterStartupScript для вызова функции JavaScript. Мы используем RegisterStartupScript, потому что действие сохранения формы имеет много разных результатов на основе ввода пользователя.
Все страницы находятся в том же домене.

MainForm.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MainForm.aspx.vb" Inherits="MainForm" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
    <script type="text/javascript"> 
     function OpenPopUp() { 
      document.getElementById('lblStatus').innerHTML = ''; 
      window.open('PopUp1.aspx', '', 
       'width=750,left=' + ((screen.width/2) - 375) + ',top=' + ((screen.height/2) - 250) + 
       ',height=500,location=no,menubar=no,status=yes,scrollbars=yes,toolbar=no,resizable=yes'); 
     } 

     function Refresh() { 
      document.getElementById('lblStatus').innerHTML = 'It Worked'; 
     } 

</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <input type="button" id="btnOpen" value="Open Popup" style="width: 110px" onclick="OpenPopUp()" /> 
    <br /><br /> 
    <asp:Label ID="lblStatus" runat="server"></asp:Label> 
</form> 
</body> 
</html> 

PopUp1.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="PopUp1.aspx.vb" Inherits="PopUp1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 
     <script type="text/javascript"> 
      function OpenPopUp2() { 
       window.open('PopUp2.aspx', '', 'width=700,left=' + ((screen.width/2) - 350) + ',top=' + 
       ((screen.height/2) - 275) + ',height=550,location=no,status=yes,toolbar=no,resizable=no,scrollbars=yes'); 
      } 
    </script> 
</head> 
<body> 
    <h1>This is pop up 1</h1> 
    <form id="form1" runat="server"> 
     <asp:TextBox ID="txtPop1" runat="server" Text="test 1" ></asp:TextBox> 
     <input type="button" id="btnOpen" value="Open Popup 2" style="width: 110px" onclick="OpenPopUp2()" /> 
    </form> 
</body> 
</html> 


PopUp2.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="PopUp2.aspx.vb" Inherits="PopUp2" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script type="text/javascript"> 
    function GrabData() {  
     var oParentDoc = window.opener.document; 
     if (oParentDoc != null) { 
      try { document.getElementById('txtPop2').value = oParentDoc.getElementById('txtPop1').value; } catch (ex1) { } 
     }  
     var oParentOpener = window.opener.opener; 
     window.opener.close(); 
     window.opener = oParentOpener; 
    } 

    function MyClose() { 
     window.opener.Refresh(); 
     window.close(); 
    } 
</script> 
</head> 
<body> 
<h1>This is pop up 2</h1> 
<form id="form1" runat="server"> 
    <asp:TextBox ID="txtPop2" runat="server" ></asp:TextBox> 
    <input type="button" id="btnSave1" value="Save Working" style="width: 110px" onclick="MyClose()" />  
    <asp:Button ID="btnSave" runat="server" Text="Save Not Working" /> 
</form> 
</body> 
</html> 


PopUp2.aspx.vb

Partial Class PopUp2 
Inherits System.Web.UI.Page 
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
     If Not Page.IsPostBack() Then 
      ClientScript.RegisterStartupScript(Type.GetType("System.String"), "Refresh", _ 
        "<script type=""text/javascript"">GrabData();</script>") 
     End If 
    End Sub 
    Protected Sub btnSave_Click(sender As Object, e As System.EventArgs) Handles btnSave.Click 
     ScriptManager.RegisterStartupScript(Me, Me.GetType(), "RestoreFilter", _ 
      "<script type=""text/javascript"">MyClose();</script>", False) 
    End Sub 
End Class 

ответ

0

Если не так:

Protected Sub btnSave_Click(sender As Object, e As System.EventArgs) Handles btnSave.Click 
    ScriptManager.RegisterStartupScript(Me, Me.form1.GetType(), "RestoreFilter", _ 
     "<script type=""text/javascript"">MyClose();</script>", False) 
End Sub 

Be (см GetType часть):

Protected Sub btnSave_Click(sender As Object, e As System.EventArgs) Handles btnSave.Click 
    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "RestoreFilter", _ 
     "<script type=""text/javascript"">MyClose();</script>", False) 
End Sub 
+0

Да, но это не правильно проблема. – SteveyJDay

Смежные вопросы