2012-01-02 70 views

回答

4

现在几乎在所有浏览器中打开新窗口都必须从用户单击事件中调用。几乎所有浏览器(包括大约99%的情况)都会阻止从页面加载事件调用的弹出窗口,因此我建议您重新考虑您的解决方案,可能是通过显示将在新窗口中打开的链接。

我会做什么,是打开新的窗口上的点击事件,这将打开你的处理页面,而这又将重定向到你想要的任何页面。基本上,首先打开带有点击事件的弹出窗口,然后在新页面中进行重定向。

+0

是。目标=“_ blank”的A标签甚至可以工作,非常简单。或者甚至更好,使用AJAX进行部分页面更新。 +1 – 2012-01-02 02:41:13

3

你不能这样做,使用Response.Write。一旦请求被发送到服务器,它就已经决定了请求的页面将被打开的位置。所以,当服务器代码运行时,现在已经太晚以至于无法更改打开页面的位置。

如果要在新窗口中打开页面,必须在将请求发送到服务器之前完成。您应该发送_blank作为目标的请求,而不是回发。您可以使用一个链接为:

<a href="Page.aspx" target="_blank">...</a> 

可以使用window.open方法在Javascript:

window.open('Page.aspx', '_blank'); 
+0

我已经尝试过这一个,但我必须在服务器端运行c#代码,然后打开新窗口 – 2012-01-02 02:45:07

+0

@FaheemShehzad:那真的没有意义,但是您可以使用'ScriptManager.RegisterStartupScript'来添加一个脚本, window.open'回发后。 – Guffa 2012-01-02 02:51:45