在重定向到其他页面之前运行JavaScript

时间:2012-06-24 09:46:40

标签: asp.net

我尝试使用JavaScript打开一个弹出窗口,然后重定向到另一个页面。

我写了这段代码:

ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "abc", "window.open('http://yahoo.com','2','resizable=yes,directories= no,menubar=no,top=null,left=00, width=100,height=100')", true);
Response.Redirect(p.Url);

但它只是一个重定向,弹出窗口无法打开。

如何在用户用户重定向到其他页面之前打开弹出窗口?

2 个答案:

答案 0 :(得分:2)

如果您在response.redirect();之前执行打开弹出窗口或窗口等操作,则无效。如果要在打开弹出框后重定向到任何页面,请确保重定向应该用Javascript编写,而不是用C#

这不起作用

Response.Write("<script language='javascript'>alert('hello')</script>");  
Response.Redirect("About.aspx"); <br>

这将有效

Response.Write("<script language='javascript'>alert('hello');
window.location.href='About.aspx';</script>");

OR

if (!ClientScript.IsStartupScriptRegistered("alert"))
{ 
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert",     "alertMe();window.location.href='About.aspx';", true);
}

通过这种方式,我们也可以调用外部JS文件

 Page.ClientScript.RegisterStartupScript(this.GetType(),    "callJS", 
 "&alt; script language='javascript' src='sample.js' &glt;  ");

答案 1 :(得分:0)

如果您使用的是ScriptManager.RegisterStartupScript,则应将javascipt代码插入到aspx页面的顶部(<head>标签中)

我的一个工作示例;

ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "abc", "<script>OpenWin();</script>", false);
Response.Redirect(p.Url);

在aspx头标签中;

<script type="text/javascript">

 function OpenWin() {
        window.open('http://yahoo.com', '2', 'resizable=yes,directories= no,menubar=no,top=null,left=00, width=100,height=100');
   }

</script>

如果此代码不起作用,另一种方式; 您可以使用javascript进行重定向。像这样;

window.location.href="p.Url";

但是通过这种方式你应该获得p.Url值到javascript。你可以做很多事情,(隐藏字段,会话等)