2012-01-29 5 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'); 
} 

Когда я запускаю код из яваскрипта функции оповещения работает, но не получает открыто новое окно.

+0

Вы хотите новое окно будет открыто перед обработкой события по коду или просто переходом на какую-либо ссылку в новом окне? – ivowiblo

+1

Пожалуйста, не добавляйте такие вещи, как «C# ASP.NET», до конца ваших названий. Для этого нужны теги. –

ответ

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

Как вы предотвращаете запуск этого всплывающего скрипта при переходе на страницу? –

+0

@JamesWierzba Можете ли вы проверить ссылку на источник или что-то еще? Я думаю, что это должно сработать. – DotNetUser

2

Response.Write ('... Javascript, что открывает окно ...')

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

+2

Боковое примечание: такой код будет работать против проверки «всплывающих окон» в браузере и, как правило, приведет к no-op (возможно, он работал в 2008 году, когда был дан ответ). –

+0

Да, конечно, мы всегда должны беспокоиться о функциях реального браузера при работе со всплывающими окнами. – Kristian

+0

ссылка в ответе не работает – ihimv

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;" ; Это работает как для кнопок, так и для LinkButtons (в моем случае). – SollyM

+0

Это было прекрасно. –

2

Или написать в поток ответа:

Response.Write("<script>"); 
Response.Write("window.open('page.html','_blank')"); 
Response.Write("</script>"); 
Смежные вопросы