如何在响应重定向之前调用javascript

时间:2009-03-12 17:39:39

标签: asp.net javascript vb.net asp.net-2.0

我正在尝试在页面重定向之前运行一些java脚本,但它无法运行。 当我注释掉Response.Redirect时,一切正常,但这违背了特定的要求。有关如何实现此功能的任何想法?

        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")  

5 个答案:

答案 0 :(得分:12)

您的问题是,在将任何内容发送回客户端之前,Response.Redirect会重定向响应(...)。因此,客户获得的是Google的响应,而不是来自您的服务器。

为了在页面上写一些javascript并在将客户端发送给Google之前执行它,您需要在警报后在javascript中进行重定向。

   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

答案 1 :(得分:3)

客户端没有机会加载。尝试从客户端重定向:

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 :(得分:2)

如果你想在重定向之前执行一些javascript,你需要在javascript中进行重定向而不是在ASP.NET中。

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 :(得分:1)

不工作:

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

工作:

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);

答案 4 :(得分:0)

如果您使用Response.Redirect,它实际上会向浏览器发送3XX response,这会导致它向重定向中的URL发送请求。它实际上不会加载/呈现响应中包含的任何数据(实际上我认为不会发送任何数据)。如果您希望在页面加载后重定向,则可能需要包含一个META refresh header,在加载后重定向一定时间,或者在脚本末尾使用javascript do重定向。