Window.Open()在Internet Explorer上会改变页面布局

3

我有一个名为Home.aspx的asp.net页面。它使用了一个母版页,并且还有一个按钮正在调用:

Response.Write("<script> window.open('page2.aspx','_blank'); </script>")

结果:新标签页已打开,其中包含page2.aspx,如果返回到Home.aspx,页面布局将被修改,中央的<div>将移动到页面左侧。
我该怎么做才能解决这个问题?请记住,这只发生在Internet Explorer上,Firefox正常工作!
非常感谢。
3个回答

2

不论你为什么这样做,你的 Response.Write 很可能会破坏 Home.aspx 页面中的 HTML/CSS/JS 输出,导致页面无法正确加载。尝试使用以下代码:

ScriptManager.RegisterStartupScript(typeof(Page),
            "OpenPage2", "window.open('page2.aspx','_blank');", true);

不要使用Response.Write,这样页面加载时就会打开你的窗口。


谢谢@F.Aquino,我会测试并回来告诉结果的!! - Diego Oliveira

1
如果有人觉得有用的话,这是对我有效的确切答案:

http://www.schnieds.com/2008/06/css-lost-on-postback-in-aspnet.html

所以,在OP的情况下,不是使用

Response.Write("<script> window.open('page2.aspx','_blank'); </script>")

那会起作用:
        String myScript = "<script> window.open('page2.aspx','_blank'); </script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript", myScript);

1
通常,如果您想从代码后端编写脚本,则ScriptManager是您的好帮手。启动脚本发生在预渲染之后,卸载脚本发生在关闭时,您可以基于事件(如调整大小)设置它们。
您的div移动与页面转换有关,而不是特定按钮的服务器代码。使用
    <script language="javascript" type="text/javascript">
        function mybutton() {
            window.open('page2.aspx', '_blank');
            return false;
        }
    </script>

在您的按钮asp标记中使用onclientclick="mybutton"可以避免此情况下的postback。除此之外,您可能有不当的css或代码会在页面转换时触发,这仍然会在您postback后立即移动您的div。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接