2012-01-29 6 views
12

C#ASP.NETのボタンクリックイベントで新しいブラウザウィンドウを開くには?ボタンクリックイベントで新しいブラウザウィンドウを開く方法は?

例を共有してください。

次のコードを実行しています。私が間違っているところを教えてください。私はjavascript関数アラート作品からコードを実行しますが、新しいウィンドウが開いて取得されていない場合

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あなたはURLの参照元などをチェックできませんか?私はそれがうまくいくと思います。 – DotNetUser

2

のResponse.Write( 'ウィンドウが開きます... javascriptの...')それはOnClientClick[MSDN]イベントを使用して、クライアント側のすべてを行うことができます

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

+2

サイドノート:このようなコードはブラウザの "ポップアップブロッカー"チェックに対して実行され、通常はノーオペレーションになります(回答があったときに2008年に働く可能性があります)。 –

+0

もちろん、ポップアップウィンドウを扱う際には、実際のブラウザの機能について常に心配する必要があります。 – Kristian

+0

答えのリンクが壊れています – ihimv

10

ハンドラとwindow.open[MDN]

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

私はすべてのバックエンドモードを試しましたが、これは最も簡単でした。コードビハインドでは、必要なチェックを行い、URLを構築して、この方法でOnClientClickにフックします。 - btnButton.OnClientClick = "window.open( '" + customURL + "'); falseを返します。 ;これは、ButtonとLinkBut​​tonの両方で機能します(私の場合)。 – SollyM

+0

これは完璧でした。 –

2

または応答ストリームに書き込む:あなたはこのようにいくつかのコードを使用することができます

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