2012-01-29 18 views
12

Jak otworzyć nowe okno przeglądarki na zdarzenie click button w C# ASP.NET?Jak otworzyć nowe okno przeglądarki na zdarzeniu kliknięcia przycisku?

Proszę udostępnić dowolny przykład.

Robię następujący kod. Daj mi znać, gdzie się nie mylę.

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

a funkcja JavaScript jest

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

Kiedy uruchomić kod javascript funkcja działa Alert ale nowe okno nie jest uzyskiwanie otwarta.

+0

Chcesz nowe okno, które zostaną otwarte przed obsługą zdarzenia z kodem za nim lub po prostu przejściem do jakiegoś linku w nowym oknie? – ivowiblo

+1

Nie dodawaj rzeczy takich jak "C# ASP.NET" na końcu swoich tytułów. Po to są tagi. –

Odpowiedz

16

można użyć kodu tak, można regulować wysokość i szerokość jak na swoje potrzeby

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

Jak zapobiec uruchamianiu tego skryptu podczas powrotu do strony? –

+0

@JamesWierzba Nie możesz sprawdzić adresu URL lub czegoś podobnego? Myślę, że to powinno zadziałać. – DotNetUser

2

Response.Write ('... javascript, który otwiera okno ...')

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

+2

Nota boczna: taki kod będzie działał na kontrole "wyskakujących okienek" w przeglądarce i zwykle spowoduje brak operacji (mógł powrócić do 2008 r., Kiedy został odebrany). –

+0

Tak, oczywiście musimy zawsze martwić się o funkcje rzeczywistej przeglądarki, gdy mamy do czynienia z oknami wyskakującymi. – Kristian

+0

link w odpowiedzi jest zepsuty – ihimv

10

Można to zrobić wszystko na stronie klienta za pomocą zdarzenia OnClientClick[MSDN] obsługi i window.open[MDN]:

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

Próbowałem wszystkich tryb końca, ale to było najłatwiejsze. W Code-Behind, wykonałbym niezbędne sprawdzenia i zbudowałam URL, a następnie podłączam go do OnClientClick w ten sposób - btnButton.OnClientClick = "window.open (" "+ customURL +" ') return false; " ; Działa to zarówno dla Przycisków i LinkButtons (w moim przypadku). – SollyM

+0

To było idealne. –

2

Albo napisać do strumienia odpowiedzi:

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