window.history.back()的改进方法window.history.go()
今天在做项目时,測试人员提出了一条bug,起初没当回事,在改动过程中才意识到其重要性,故记录下来。
依照需求,系统应该实现例如以下的功能:有三个关联的页面a.aspx(简称a),b.aspx(简称b),,c.aspx(简称c),当中a页面主要是进行因子录入,所有录入后点击“模型检验”,进入b页面,b页面中存在两个button,各自是“模型调整”和“取消”,点击“模型调整”进入c页面,点击“取消”返回录有数据的a页面。c页面存在两个button,各自是“模型确认”和“取消”。点击“取消”,返回到b页面。
而bug的大概意思就是:先在b页面点击“模型调整”进入c页面,再在c页面点击“取消”,返回到b页面。最后,在b页面点击“取消”,理论上应该直接返回到录有数据的a页面,但此时却须要点击两次“取消”才干够实现。
细致看页面,前台写的方法是window.history.back(),若要这样的方法实现理论上的效果,仅仅能是在b页面存在一个“取消”button,或者仅仅点击“取消”button。否则就会出现bug中的问题。
我在网上找答案,可是其给出的答案不可以直接应用,我做了一些改动,终于可以实现预期效果,代码例如以下:
前台,<a href="#" id="alink" runat="server"><img src="qx.jpg" border="0"></a>
后台,在page_load()中写入例如以下代码:
string sKey = Request.Url.LocalPath;
HttpCookie cookfrom = Request.Cookies[sKey];
if (cookfrom == null)
{
cookfrom = new HttpCookie(sKey);
}
string sTimes = "0 ";
if (IsPostBack)
{
sTimes = cookfrom["count "];
sTimes = (Convert.ToInt32(sTimes) + 1).ToString();
}
cookfrom["count "] = sTimes;
Response.Cookies.Add(cookfrom);
int iTimes = (GetPageRequestTimes()) * -1;
this.alink.Attributes.Add("onclick ", "javascript:window.history.go( " + iTimes.ToString() + "); ");
当中,GetPageRequestTimes()方法例如以下:
public static int GetPageRequestTimes()
{
string sKey = System.Web.HttpContext.Current.Request.Url.LocalPath;
HttpCookie cookfrom = System.Web.HttpContext.Current.Response.Cookies[sKey];
string sTimes = cookfrom["count "];
if (sTimes.Length > 0)
{
return Convert.ToInt32(sTimes) + 1;
}
else
{
return 0;
}
}
在网上,另一种方法例如以下,只是看跟帖的人说“假设直接右键刷新就不起作用了”,我个人在改动时并没有採用这样的方法,所以并不太了解,仅仅是作为一种參考放在这里,以免丢失。代码例如以下:
假设button的ID是LinkButton1
protected void Page_Load(object sender, EventArgs e)
{
int x=0;
if (ViewState[ "x "]!=null)
{
x=(int)ViewState[ "x "];
}
x++;
ViewState[ "x "]=x;
this.LinkButton1.Attributes.Add( "onclick ", "window.history.go(- "+x+ "); return false ");
}
注意:无论是window.go()还是window.back(),都仅仅能适用于父页面与子页面在同一个框架里,即子页面不是单独弹出的。
window.history.back()的改进方法window.history.go()的更多相关文章
- window.opener调用父窗体方法的用法
应用实例: function BindWindowCloss() { $(window).bind('beforeunload', function () { ...
- html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题
一.背景 使用ajax,可以实现不需要刷新整个页面就可以进行局部页面的更新.这样可以开发交互性很强的富客户端程序,减少网络传输的内容.但长期以来存在一个问题,就是无法利用浏览器本身提供的前进和后退按钮 ...
- JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素
一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...
- 1.4(JavaScript学习笔记) window对象的属性及方法
一.window对象 window对象代表当前窗口,所有全局对象都是windows的属性, 例如document是window的属性,window.document.writer("&quo ...
- (转)移动端自定义返回上一页的方法:history
在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求. 那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...
- javascript js全部的 全局属性 和 方法-window
window method: open(URL,窗口名称,窗口风格)//打开一个新的窗口,并在窗口中装载指定URL地址的网页 close()//close方法用于自动关闭浏览器窗口 alert(提示字 ...
- history对象属性和方法
history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起,history是window对象的属性,因此每个浏览器窗口.每个标签页乃至每个框架,都有自 己的history对象和特定的wind ...
- window对象中的常见方法
<body><!-- window对象中的常见方法--><script type="text/javascript"> var timeid; ...
- 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~
在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~ 不需要额外购买GPS设备. 将手机GPS数据通过蓝牙传输给计算机使用,当然通过类似方 ...
随机推荐
- HDU1754_I Hate It(线段树/单点更新)
解题报告 题意: 略 思路: 单点替换,区间最值 #include <iostream> #include <cstring> #include <cstdio> ...
- 动态拼接lambda表达式树
前言 最近在优化同事写的代码(我们的框架用的是dapperLambda),其中有一个这样很普通的场景——界面上提供了一些查询条件框供用户来进行过滤数据.由于dapperLambda按条件查询时是传入表 ...
- 祖国版SoloWheel:Airwheel爱尔威火星车 拆箱&上手经验_运动户外_晒物广场_什么值得买
http://m.baidu.com/from=844b/bd_page_type=1/ssid=0/uid=3151E6C0905477A13653132D762BB6FB/pu=sz%401320 ...
- poj3252(数位dp)
题目连接:http://poj.org/problem?id=3252 题意:拆成2进制,在记录0和1的个数 求区间[a,b]中,满足传化成2进制后,0的个数>=1的个数的数字的个数... 分析 ...
- hdu 折线切割平面 (java)
问题: 仅仅要找到规律问题就攻克了,在做题时应该细致去发现数与数之间的联系. 折线切割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- 程序猿进化 - 在拉钩子1024对APE节讲座计划
注意:下面这篇文章来自于我在网上拉勾1024对APE节现场演示程序. 我是蒋宇捷,信天创投的合伙人.之前是百度魔图的联合创始人. 我先做个自我介绍,事实上每次介绍自己事实上是非常痛苦的事情,由于我前不 ...
- MYSQL正在使用select发现现场记录方法,包括一个逗号分隔的字符串
首先,我们创建一个逗号分隔字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR ...
- js检测浏览器中是否安装了flash播放插件
这两天工作中需要在网页中嵌入flash小游戏,我使用的是swfobject.js version:1.5.其他方面都很好,唯独版本检测这里一直没有搞通,后来实在无奈之下,改用js来检测浏览器的flas ...
- as 的妙用
个人理解:as跟is is 相当于判断里的“==” 是与否 if(e.OriginalSource is Button) as 一般用来转换另一种object e.OriginalSource as ...
- BZOJ 1038 ZJOI2008 瞭望塔 半平面交
题目大意及模拟退火题解:见 http://blog.csdn.net/popoqqq/article/details/39340759 这次用半平面交写了一遍--求出半平面交之后.枚举原图和半平面交的 ...