点击它时我有一个按钮会发出Javascript,将用户重定向到google.com。由于我不希望此重定向在历史记录中生成项目,因此我使用window.location.replace但它会生成历史记录项。
protected void btn1_Click(object sender, EventArgs e)
{
string url = "window.location.replace('http://google.com');";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Redirect", url, true);
}
任何人都知道如何处理它。
答案 0 :(得分:1)
如果您没有回拨,那么您可以尝试:
protected void btn1_Click(object sender, EventArgs e)
{
HttpContext.Current.Response.Write("<html><head><script type='text/javascript'>window.location.replace('http://google.com');</script>/</head></html>");
HttpContext.Current.Response.End();
}
答案 1 :(得分:0)
我不确定,但你可以试试这个:
var len = history.length;
history.go(-len);
window.location.href = 'http://google.com';
答案 2 :(得分:0)
为什么使用服务器端事件处理程序来获取javascript?这可能是导致问题的原因。
ASP.Net的工作方式是,当您使用OnClick处理程序(您发布的代码)单击其中一个<asp:button />
时,浏览器会将整个form
发回服务器以查找该怎么办。这是一个新的历史事件。因此,您的日志中将包含两个历史记录条目。我猜测该页面将返回页面的新版本,使用javascript并运行,重定向客户端,仅替换新的历史事件,而不是旧事件。这就是为什么你在历史上得到的东西。
解决此问题的方法是不使用服务器端OnClick
事件,ASP.Net按钮来执行此操作。只需使用javascript。回发到服务器以获取可能在初始请求中提供的javascript是没有意义的。
作为一个好的经验法则,每当你发现自己在C#代码中执行任何与javascript相关的操作时,它几乎总是以错误的方式执行它。