由window.history.back()引发的问题
由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()引发的问题的更多相关文章
- window.history的跳转实质-HTML5 history API 解析
在上一浏览器跳转行为的测试中,我们看到了通过不同的方法操作浏览器跳转时,它的刷新表现有所不同,在这一文章中,将看看,为何会产生这样的不同?其背后的实质是什么?浏览器的访问历史记录到底是如何运作的呢? ...
- safari 浏览器window.history.go(-1)运行无效解决办法
这几天做了几个手机端app的wap页面,做完之后发现一个问题,那就是ios系统下的safari浏览器不支持window.history.go(-1)..无语... 解决方法很简单!加上return f ...
- javascript:window.history.go(-1)
history是你浏览过的网页的url(简单的说就是网址)的集合,也就是你的浏览器里的那个历史记录.它在js里是一个内置对象,就跟document一样,它有自己的方法,go就是其中一个. 这个方法的参 ...
- window.history 和 DWZ 框架
DWZ框架的ajax请求返回的一般都是一个HTML片段,整个页面是由一个个HTML片段组成的,可以由TAB切换其内容,但是只有一个body和HEAD,一般head 和 菜单栏是不会动的. 今天遇到一个 ...
- window.history.pushState与ajax实现无刷新更新页面url
ajax能无刷新更新数据,但是不能更新url HTML5的新API: window.history.pushState, window.history.replaceState 用户操作history ...
- javascript宿主对象之window.history
window.historys属性允许我们操作同一个浏览器回话中的已访问页面,例如我们可以看到在这之前我们浏览页面的数量: window.history.length 由于隐私保护,我们无法获取这些页 ...
- 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- window.history
作者:zccst 旧版: forword() backword() go(number) HTML5中新增了 onhashchange 浏览器兼容性较好,用得较多 pushState / repla ...
- 返回页面,主页面不刷新window.history.go(-1),主页面刷新window.location.go(-1)
返回上一页,不刷新 window.history.go(-1) 返回上一页,刷新 window.location.go(-1)
随机推荐
- java小程序 质数
package com.test; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; im ...
- java -d64
在 resin启动时指定java时加上了 -d64选项 JAVA="/xx/java -d64" 选择 "-server"选项必须使用-d64 http://b ...
- Windows程序设计-窗口和消息
本章内容比较少,没有代码类的内容,这里付思维导图一章,看起来比较清晰.
- ubuntu更换软件源
ubuntu更换软件源 /etc/apt/source.list 163: deb http://mirrors.163.com/ubuntu/ trusty main restricted u ...
- Django: TemplateDoesNotExist at /admin/
最近用virtualenv 总出现 Django: TemplateDoesNotExist at /admin/的问题,报错TemplateDoesNotExist at /admin/admin/ ...
- Object的toString决定了重写equals
默认的toString结果public String toString(){ return getClass().getName()+"@"+Integer.toHexStr ...
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...
- 使用git向github中添加项目并更新(备忘录)
今天使用Git&github&ST3时,发现ST3不仅是git插件不能push成功,使用sublimegit插件也不行. 可能是没有掌握sublimegit的使用技巧,有待后续继续摸索 ...
- Android开发-API指南-系统权限
System Permissions 英文原文:http://developer.android.com/guide/topics/security/permissions.html 采集日期:201 ...
- Flex 播放视频
Flex提供视频控件(VideoDisplay Control)播放图像和声音. 视频控件只支持播放,暂停和停止功能.不提供倒退和前进功能.只支持播放FLV格式的影片. 1. 视频控件标签 对应的MX ...