Javascript RegisterStartupScript导致window.opener为空

Javascript RegisterStartupScript导致window.opener为空,javascript,asp.net,vb.net,window.opener,registerstartupscript,Javascript,Asp.net,Vb.net,Window.opener,Registerstartupscript,我无法在子弹出窗口之间传输window.opener值。此代码在IE8和order中工作,但在IE9和更高版本中停止工作。欢迎您的任何意见。 用另一种方式解释。我妹妹知道我是她哥哥,但不相信我能告诉她我们的父母是谁 工艺流程: 父窗口(主窗体)->打开弹出窗口(弹出窗口1) 用户单击弹出窗口1上的按钮打开弹出窗口2。 弹出窗口2打开: 它从弹出窗口1中提取数据,然后关闭弹出窗口1 用户单击弹出窗口2上的按钮(保存)。 弹出窗口2刷新原始父“主窗体”上的数据。然后关闭它自己 最后一步是没有发生

我无法在子弹出窗口之间传输window.opener值。此代码在IE8和order中工作,但在IE9和更高版本中停止工作。欢迎您的任何意见。

用另一种方式解释。我妹妹知道我是她哥哥,但不相信我能告诉她我们的父母是谁

工艺流程:
父窗口(主窗体)->打开弹出窗口(弹出窗口1)
用户单击弹出窗口1上的按钮打开弹出窗口2。
弹出窗口2打开:
它从弹出窗口1中提取数据,然后关闭弹出窗口1
用户单击弹出窗口2上的按钮(保存)。
弹出窗口2刷新原始父“主窗体”上的数据。然后关闭它自己

最后一步是没有发生的步骤。我创建了下面的示例,以显示该功能使用纯JavaScript工作,但在回传和使用RegisterStartupScript调用JavaScript函数时失败。我们使用RegisterStartupScript是因为表单的保存操作根据用户的输入有许多不同的结果。
所有页面都在同一个域中。

MainForm.aspx


函数OpenPopUp(){
document.getElementById('lblStatus')。innerHTML='';
window.open('PopUp1.aspx','',
'宽度=750,左='+((screen.width/2)-375)+',顶='+((screen.height/2)-250)+
'高度=500,位置=no,菜单栏=no,状态=yes,滚动条=yes,工具栏=no,可调整大小=yes';
}
函数刷新(){
document.getElementById('lblStatus')。innerHTML='It Worked';
}


PopUp1.aspx


函数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,resizeable=no,scrollbars=yes');
}
这是弹出窗口1

PopUp2.aspx


函数GrabData(){
var oParentDoc=window.opener.document;
如果(oParentDoc!=null){
请尝试{document.getElementById('txtPop2')。value=oParentDoc.getElementById('txtPop1')。value;}catch(ex1){
}     
var oParentOpener=window.opener.opener;
window.opener.close();
window.opener=oParentOpener;
}
函数MyClose(){
window.opener.Refresh();
window.close();
}
这是弹出2

PopUp2.aspx.vb

部分类PopUp2
继承System.Web.UI.Page
受保护的子页加载(发送者作为对象,e作为System.EventArgs)处理Me.Load
如果不是Page.IsPostBack(),则
RegisterStartupScript(Type.GetType(“System.String”),“Refresh”_
“GrabData();”)
如果结束
端接头
受保护的子btnSave\u单击(发件人作为对象,e作为系统.EventArgs)处理btnSave。单击
ScriptManager.RegisterStartupScript(Me,Me.GetType(),“RestoreFilter”_
“MyClose();”,False)
端接头
末级
这不应该:

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
Protected Sub btnSave\u Click(发送方作为对象,e作为System.EventArgs)处理btnSave。单击
ScriptManager.RegisterStartupScript(Me,Me.form1.GetType(),“RestoreFilter”_
“MyClose();”,False)
端接头
Be(请参阅GetType部分):

Protected Sub btnSave\u Click(发送方作为对象,e作为System.EventArgs)处理btnSave。单击
ScriptManager.RegisterStartupScript(Me,Me.GetType(),“RestoreFilter”_
“MyClose();”,False)
端接头
<%@ 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>
<%@ 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>
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
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
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