2012-01-29 135 views
12

如何在C#ASP.NET中的按钮单击事件上打开新的浏览器窗口?如何在按钮点击事件中打开新的浏览器窗口?

请分享任何示例。

我正在做下面的代码。请让我知道我出错的地方。

btn_Click() 
{ 
    if(condition==true) 
    { 
     this.Page.ClientScript.RegisterStartupScript(
      this.GetType(), 
      "page_index_script2", 
      "openNewWindow();", 
      true 
     ); 
    } 
} 

以及JavaScript函数是

function openNewWindow() 
{ 
    alert('HI'); 
    window.open('http://www.stackoverflow.com'); 
} 

当我从javascript函数警报工程运行的代码,但没有得到开辟了新的窗口。

+0

你想打开的新窗口在处理后面的代码事件之前,或只是在新窗口中的某个链接? – ivowiblo 2012-01-29 19:43:25

+1

请勿将“C#ASP.NET”等内容添加到标题的末尾。这就是标签的用途。 – 2012-01-29 20:27:34

回答

16

你可以使用一些这样的代码,你可以调整高度和宽度根据自己的需要

protected void button_Click(object sender, EventArgs e) 
    { 
     // open a pop up window at the center of the page. 
     ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open('your_page.aspx', null, 'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'');", true); 
    } 
+0

如何防止在导航回页面时运行此弹出脚本? – 2016-08-09 18:38:48

+0

@JamesWierzba你不能检查网址引用或什么?我认为这应该工作。 – DotNetUser 2016-08-30 17:33:32

2

的Response.Write( '...的JavaScript打开一个窗口...')

http://www.aspspider.com/qa/Question2714.aspx

+2

注意:这样的代码会在浏览器中对“弹出窗口阻止程序”进行检查,通常会导致无操作(当它被回答时可能会返回2008年)。 – 2012-01-29 23:18:01

+0

是的,当然,在处理弹出窗口时,我们必须时常担心实际浏览器的功能。 – Kristian 2012-01-30 06:44:32

+0

答案中的链接中断 – ihimv 2015-11-10 10:42:40

10

它可以通过OnClientClick[MSDN]事件中完成所有的客户端处理器和window.open[MDN]

<asp:Button 
    runat="server" 
    OnClientClick="window.open('http://www.stackoverflow.com'); return false;"> 
    Open a new window! 
</asp:Button> 
+0

我尝试了所有后端模式,但这是最简单的。在Code-Behind中,我会执行必要的检查并构建URL,然后以此方式将其挂接到OnClientClick上 - btnButton.OnClientClick =“window.open('”+ customURL +''); return false;“ ;这适用于Button和LinkBut​​tons(在我的情况下)。 – SollyM 2015-07-01 14:47:56

+0

这很完美。 – 2017-02-20 21:56:25

2

或写入响应流:

Response.Write("<script>"); 
Response.Write("window.open('page.html','_blank')"); 
Response.Write("</script>"); 
相关问题