用JS:history.go(-1)就可以回到A页面,如果使用Click,Change事件等激发了页面的回传,此时用history.go(-1)就回不到A页面了,遇到此问题的朋友们可以祥看本文
问题描述:我们有两个页面A和B,当我们从A跳到B后不做作任何让页面回传的操作,用JS:history.go(-1)就可以回到A页面,但是比如我们有Click,Change事件等激发了页面的回传,此时用history.go(-1)就回不到A页面了。 
解决的方法:我们要想办法记录到页面回传的次数N,然后用history.go(-n),就可以回到A页面。 
在B页面中放一个控件记录其回传的次数,初始值为1 
复制代码 代码如下:
  
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title></title> 
<script> 
function goto() { 
var n=document.getElementById("TextBox1").value; 
var n=Number(n); 
history.go(-n); 
} 
</script> 
</head> 
<body> 
<form runat="server"> 
<div> 
<asp:Button runat="server" Text="Button" /> 
<input type="button" value="reset"/> 
<asp:TextBox runat="server" ToolTip="放一个控件保存页面回传次数">1</asp:TextBox> 
</div> 
</form> 
</body> 
</html> 
在B页面的CS代码如下:
复制代码 代码如下:
 
protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
{ 
this.TextBox1.Text = "1"; 
} 
else 
{ 
this.TextBox1.Text = Convert.ToString(Convert.ToInt16(this.TextBox1.Text) + 1); 
} 
} 
这样子不管你从A到了B页面,在B页面中做了什么操作,页面回发了多少次,当你点击【返回】时,都可以跳回页面A了
源码下载
您可能感兴趣的文章:
