2009-03-12 5 views
3

Ich versuche, einige Java-Skript kurz vor einer Seite Umleitung auszuführen, aber es läuft nicht. Wenn ich das Response.Redirect auskommentiere, funktioniert alles gut, aber das geht gegen die besonderen Anforderungen. Irgendwelche Ideen, wie man diese Funktionalität implementiert?Wie rufe ich Javascript kurz vor einer Antwort Umleitung

 Dim strscript As String = "<script>alert('hello');</script>" 

     If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
      ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
     End If 

     Response.Redirect("http://www.google.com") 

Antwort

12

Ihr Problem ist, dass Response.Redirect die Antwort (...) umleitet, bevor irgendetwas zurück an den Client gesendet wird. Was der Kunde bekommt, ist eine Antwort von Google und nicht von Ihrem Server.

Um etwas Javascript auf der Seite zu schreiben und es ausführen zu lassen, bevor Sie den Client an Google senden, müssen Sie nach der Warnung Ihre Umleitung in Javascript durchführen.

Dim strscript As String = "<script>alert('hello');window.location.href='http://www.google.com'</script>" 

    If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
     ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
    End If 
3

Der Client erhält keine Chance zum Laden. Versuchen Sie, von der Client-Seite umleiten:

Dim strscript As String = "<script>alert('hello');window.location.href("http://www.google.com");</script>" 

If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
    ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
End If 
2

Wenn Sie vor dem Umleiten einige Javascript ausführen wollen, müssen Sie die Umleitung in Javascript und nicht in ASP.NET zu tun.

0

Wenn Sie eine Response.Redirect verwenden es tatsächlich sendet ein 3XX response an den Browser, das es eine Anfrage an die URL in der Umleitung senden verursacht. Es werden keine Daten geladen/gerendert, die in der Antwort enthalten sind (tatsächlich glaube ich nicht, dass Daten gesendet werden). Wenn Sie möchten, dass die Seite nach dem Laden der Seite umgeleitet wird, können Sie entweder eine META refresh header einfügen, die nach dem Laden eine bestimmte Zeit umleitet, oder Javascript an die Weiterleitung am Ende des Skripts.

+0

Eigentlich sendet die Umleitung eine Seite zusammen mit der 3xx-Code "Seite bewegt". Das zeigt der Browser, wenn man in eine ewige Redirect-Schleife gerät und der Browser nach etwa 20 Weiterleitungen aufgibt. – Guffa

+0

Ok. Also keine der Daten, die Sie auf der Seite hinzugefügt haben .... – tvanfosson

+0

Sie * können * senden Sie Ihren eigenen Antworttext mit einem 3xx Statuscode, aber 99,9% der Benutzer werden es nicht sehen (weil ihr Browser ohne umleiten wird) Rendern). Normalerweise sende ich einen Link mit dem gleichen Ziel wie die Umleitung, für jene unglücklichen Seelen, die nicht automatisch umgeleitet werden. – Piskvor

1

nicht funktioniert:

string sScript = "<script language='javascript'>alert(\"" + Alertstr + "\"); alert('Record has been Updated Successfully'); </script>"; 
ClientScript.RegisterStartupScript(typeof(Page), "alert", sScript); 
response.redirect("LandingPage.aspx"); 

Arbeits:

string sScript = "<script language='javascript'>alert(\"" + Alertstr + "\"); alert('Record has been Updated Successfully'); window.location.href = 'LandingPage.aspx'; </script>"; 
ClientScript.RegisterStartupScript(typeof(Page), "alert", sScript); 
Verwandte Themen