今天在做项目时,測试人员提出了一条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()的更多相关文章

  1. window.opener调用父窗体方法的用法

    应用实例:        function BindWindowCloss() {            $(window).bind('beforeunload', function () {    ...

  2. html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题

    一.背景 使用ajax,可以实现不需要刷新整个页面就可以进行局部页面的更新.这样可以开发交互性很强的富客户端程序,减少网络传输的内容.但长期以来存在一个问题,就是无法利用浏览器本身提供的前进和后退按钮 ...

  3. JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素

    一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...

  4. 1.4(JavaScript学习笔记) window对象的属性及方法

    一.window对象 window对象代表当前窗口,所有全局对象都是windows的属性, 例如document是window的属性,window.document.writer("&quo ...

  5. (转)移动端自定义返回上一页的方法:history

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求. 那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...

  6. javascript js全部的 全局属性 和 方法-window

    window method: open(URL,窗口名称,窗口风格)//打开一个新的窗口,并在窗口中装载指定URL地址的网页 close()//close方法用于自动关闭浏览器窗口 alert(提示字 ...

  7. history对象属性和方法

    history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起,history是window对象的属性,因此每个浏览器窗口.每个标签页乃至每个框架,都有自 己的history对象和特定的wind ...

  8. window对象中的常见方法

    <body><!-- window对象中的常见方法--><script type="text/javascript"> var timeid; ...

  9. 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~

    在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~ 不需要额外购买GPS设备. 将手机GPS数据通过蓝牙传输给计算机使用,当然通过类似方 ...

随机推荐

  1. 架设FLASH视频流server心得

    什么样的情况下才使用FMS?有下面几种情形的时候,你可能须要用到FMS 1.须要通过Flash Player 播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候.渐进式下载就是 ...

  2. TMS320F28335项目开发记录5_28335之CCS编程基础

    CCS开发环境已经为我们封装好了很多片内外设寄存器的结构体,我们仅仅须要包括对应的官方的头文件就能够使用了,那么它的内部详细是怎样实现的呢? 以下来一个典型的样例: 1.使用结构体和联合体 A.用st ...

  3. CentOS 7没有ifconfig命令处理

    新安装CentOS 7 64位后发现查看ip配置的时候没有ifconfig,百度后发现# yum install net-tools软件包即可.

  4. Linux SSH端口转发

    SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发     假定有三台主机A. ...

  5. hdu2126(求方案数的01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2126 题意: n个物品,m元钱,每个物品最多买一次,问最多可以买几件物品,并且输出方案数. 分析:一看 ...

  6. jeecg 3.5.2 新版本号4种首页风格 【经典风格,shortcut风格,ACE bootstrap风格,云桌面风格】

    [1]经典风格: [2]Shortcut风格: [3]ACE bootsrap风格: [4]云桌面风格: [5]自己定义图表 watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...

  7. FragmentCustomAnimation实现Fragment的界面切换

    1.知识点:FragmentCustomAnimation 2.演示样例:来自于官网演示样例的简化,这样更方便于学习该知识点. 本演示样例的源代码下载地址为:http://download.csdn. ...

  8. 关于margin-right的应用问题

    今天在群里面,有人抛出了一个关于css中margin-right没有效果的问题.CSS代码和HTML代码例如以下: .style1{ width:400px; height:440px; backgr ...

  9. ServiceProvider实现

    ServiceProvider实现揭秘 [总体设计 ] 本系列前面的文章我们主要以编程的角度对ASP.NET Core的依赖注入系统进行了详细的介绍,如果读者朋友们对这些内容具有深刻的理解,我相信你们 ...

  10. Class ThreadPoolExecutor

    Class ThreadPoolExecutor java.lang.Object java.util.concurrent.AbstractExecutorService java.util.con ...