由window.history.back()引发的问题

编写人:CC阿爸

2015-1-30

今天在这里,我想与大家一起分享由windows.history.back()引发的问题,笔者在实际开发当中遇到了多种不同的情况,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。

1.由于刚开始进行的web开发,很多时候使用的为html控件,因此处理起来相当简单

如以下两种方法:

window.history.back();  (不会刷新)

window.location.href=’上一个页面.aspx’  (会刷新)

<input type=button value=刷新 onclick="window.location.reload()">
<input type=button value=前进 onclick="window.history.go(1)">
<input type=button value=后退 onclick="window.history.go(-1)">
<input type=button value=前进 onclick="window.history.forward()">
<input type=button value=后退 onclick="window.history.back()"> 
后退+刷新
<input type=button value=后退 onclick="window.history.go(-1);window.location.reload()">

2.但转到webcontrol时,发现这些就不能通用了。经过测试发现要采用如下操作(留意红色部分内容)

<asp:Button ID="btnBack" Width="80px" runat="server" Text="Back"  OnClientClick=" window.history.back();return false; ">(不会刷新)

 <asp:Button ID="btnBack" Width="80px" runat="server" Text="Back"  OnClientClick="window.location='P_PRQuoList.aspx';return false;"> (会刷新)

<asp:Button ID="btnBack" Width="80px" runat="server" Text="Back"  OnClientClick="window.location.href=document.referrer; return false;">
                    </asp:Button>(会刷新)

3.C# Web程序中,如为页面按钮写返回上一页代码

this.RegisterClientScriptBlock("E","<script language=javascript>history.go(-2);</script>");

其中,history.go(-2),要写为-2,因在按钮事件触发前,已刷新一次页面,所以应是-2。

Response.Write("<script language=javascript>history.go(-2);</script>");

此处也要写为“-2”。跟直接写脚本的有所不同。history.back()是会上一页
i=1
history.go(i)去指定的某页

4.另:有时候,我们返回时,想保留上次输入的内容,又如何处理,一般情况下返回后,内容就被清空了。

网上同学讲.history.back(-1);是不能去掉的.. 用window.location.href='页面.aspx';

以下为通用的解决方案:

<HTML><HEAD>

<META content=history name=save>
<STYLE>
.saveHistory {behavior:url(#default#savehistory);}
</STYLE> <META content="MSHTML 6.00.2800.1528" name=GENERATOR></HEAD>
<BODY>加了历史保留功能:<BR><TEXTAREA class=saveHistory></TEXTAREA><BR>没有加的:<BR><TEXTAREA></TEXTAREA>
<P><INPUT onclick='javascript:location.href="http://www.google.com"' type=button value=点击进入,再按后退键试试?> </P></BODY></HTML>

以下第二部分为我在程序中采用的解决方案

欢迎加入技术分享群

以下是其它网友总结的文章,写得很全面,现摘抄下来供大家参考

http://blog.csdn.net/durendong/article/details/9245863

打开一个jsp页面,肯定是用客户端脚本进行刷新了。
Javascript刷新页面的几种方法:
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand('Refresh')
6 window.navigate(location)
7 location.replace(location)

8 document.URL=location.href

由window.history.back()引发的问题的更多相关文章

  1. window.history的跳转实质-HTML5 history API 解析

    在上一浏览器跳转行为的测试中,我们看到了通过不同的方法操作浏览器跳转时,它的刷新表现有所不同,在这一文章中,将看看,为何会产生这样的不同?其背后的实质是什么?浏览器的访问历史记录到底是如何运作的呢? ...

  2. safari 浏览器window.history.go(-1)运行无效解决办法

    这几天做了几个手机端app的wap页面,做完之后发现一个问题,那就是ios系统下的safari浏览器不支持window.history.go(-1)..无语... 解决方法很简单!加上return f ...

  3. javascript:window.history.go(-1)

    history是你浏览过的网页的url(简单的说就是网址)的集合,也就是你的浏览器里的那个历史记录.它在js里是一个内置对象,就跟document一样,它有自己的方法,go就是其中一个. 这个方法的参 ...

  4. window.history 和 DWZ 框架

    DWZ框架的ajax请求返回的一般都是一个HTML片段,整个页面是由一个个HTML片段组成的,可以由TAB切换其内容,但是只有一个body和HEAD,一般head 和 菜单栏是不会动的. 今天遇到一个 ...

  5. window.history.pushState与ajax实现无刷新更新页面url

    ajax能无刷新更新数据,但是不能更新url HTML5的新API: window.history.pushState, window.history.replaceState 用户操作history ...

  6. javascript宿主对象之window.history

    window.historys属性允许我们操作同一个浏览器回话中的已访问页面,例如我们可以看到在这之前我们浏览页面的数量: window.history.length 由于隐私保护,我们无法获取这些页 ...

  7. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. window.history

    作者:zccst 旧版: forword() backword() go(number) HTML5中新增了 onhashchange  浏览器兼容性较好,用得较多 pushState / repla ...

  9. 返回页面,主页面不刷新window.history.go(-1),主页面刷新window.location.go(-1)

    返回上一页,不刷新 window.history.go(-1) 返回上一页,刷新 window.location.go(-1)

随机推荐

  1. QT学习之路---信号槽

    #include<QApplication> #include<QPushButton> int main(int argc,char *argv[]) { QApplicat ...

  2. 修改Tomcat的网站根目录

    想把Tomcat的默认网站根目录修改成自己指定的目录,比如:F:/MyWeb.这样以后把自己写的index.jsp放到该目录下,就能通过http://localhost:8080/index.jsp来 ...

  3. Innosetup中将bat文件压缩到压缩包中

      有时候在安装的过程中需要调用某些文件(bat或者exe等文件),但是只需要使用一次,然后就可以删掉该文件, 在Innosetup中应该这样操作: 1.在.iss脚本的[Files]章节写下: So ...

  4. mssqlserver 批量插入示例

    public bool DoQuestionSqlBulkCopy(DataTable dtDoQuestion,             string DoQuestionName,         ...

  5. Codeforces 404D [DP]

    /* 我是一个习惯后悔,但是没办法忍受内疚感的二货== 这题是个无脑dp,但是比赛大概20min没出...其实最后5min我好好想想简单化边界条件,可以出的. 题意: 给你一个长度为1e6的由?*01 ...

  6. DNS加速

    http://elingwange.iteye.com/blog/1563497 http://blog.csdn.net/lize1988/article/details/10404645 java ...

  7. (转)C#使用Mysql记录

    (1)首先需要下载C#访问MySQL数据库的ADO.NET驱动程序 http://dev.mysql.com/downloads/connector/ 我下载的版本为: mysql-connector ...

  8. struts2常用的常量constant

    常用的常量配置  struts.serve.static.browserCache 该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为fa ...

  9. Hive静态分区表&动态分区表

    静态分区表: 一级分区表: CREATE TABLE order_created_partition ( orderNumber STRING , event_time STRING ) PARTIT ...

  10. jdk线程的死锁

    两个线程相互等着对方释放同步监听器:等着要对方的结果后才能继续执行就会发生死锁. 男对女说:你先嫁给我,我再给你买房子:女对男说:你先给我买房子,我再嫁给你. 多个线程同时锁住同一个监听对象. 在开发 ...