Jquery 监听浏览器前进后退
jQuery(document).ready(function () {
if (window.history && window.history.pushState) {
$(window).on('popstate', function () {
/// 当点击浏览器的 后退和前进按钮 时才会被触发,
window.history.pushState('forward', null, '');
window.history.forward(1);//当前页 ,
});
}
//在ie中必须有这两行
window.history.pushState('forward', null, '');
window.history.forward(1);
});
这段代码主要使用js的window.history 对象;介绍一下history的几个比较重要的方法:
1、window.history.forward(); //加载下一个页面(浏览过的) ,和浏览器上的 前进按钮 效果相同
2、window.history.back(); //回到上一个页面 , 和浏览器上的 后退按钮效果相同
ps: 如果浏览的网页有缓存, 当点击浏览器上的 前进和后退 按钮时, 是优先加载浏览器的缓存数据,(重要一点是:不走服务器端代码,如果在服务器端代码加断点,是不过断点的, 这也是缓存的一个弊端,有时候容易导致表单中的数据错乱掉,不能及时更新,)
3、history.go(0); //刷新当前页面 和浏览器上的 刷新 按钮效果相同
history.go(-1): 效果和history.back() 效果相同
history.go(1) : 效果和history.forward() 效果相同
PS: js history对象示例代码
4、window.history.pushState(状态码, 标题 , url) /// 添加并激活一个历史记录条目, 向history 添加当前页面的历史记录,并修改当前页面的url。
举个例子:
假如当前页面的url是:http://localhost:28713/SBNext/index.aspx
执行:window.history.pushState('forward', null, 'badu.aspx');
结果: 在浏览器历史记录中添加一条记录http://localhost:28713/SBNext/index.aspx。当前页面的url变成http://localhost:28713/SBNext/badu.aspx ,但是不会刷新页面,也不会检查url是否正确。 这时如果点击 浏览器的back按钮会回退到http://localhost:28713/SBNext/index.aspx页面, 还是当前页面。 所以这就是上面禁用back按钮 的原理。
5、History.replaceStatet(); 参数和pushState()函数一样, 作用替换当前的url。
6、每当激活的历史记录发生变化时,都会触发popstate事件 , 点击浏览器的back 和 next 按钮会触发popstate事件 , 点击刷新按钮不会。
所以可以使用 popstate 事件监听 back 和next 按钮是否被点击。
转自 : https://www.cnblogs.com/generalLi/p/5887259.html
补充:
当点击浏览器后退时 发出警告:
jQuery(document).ready(function ($) {
if (window.history && window.history.pushState) {
$(window).on('popstate', function () {
var hashLocation = location.hash;
var hashSplit = hashLocation.split("#!/");
var hashName = hashSplit[1];
if (hashName !== '') {
var hash = window.location.hash;
if (hash === '') {
alert("Back button isn't supported. You are leaving this application on next clicking the back button");
}
}
});
window.history.pushState('forward', null, './#forward');
}
});
参考:https://stackoverflow.com/questions/6359327/detect-back-button-click-in-browser
Jquery 监听浏览器前进后退的更多相关文章
- 用jQuery监听浏览器窗口的变化
$(window).resize(function () { //当浏览器大小变化时 alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(docume ...
- javascript监听浏览器前进后退
window.addEventListener("popstate", function () { backStatus=true; return; })
- 监听用户的后退键,解决部分浏览器回退的bug
监听用户的后退键,解决部分浏览器回退的bug $(document).keydown(function (event) { // 监听backspace键 if (event.keyCode == 8 ...
- 监听浏览器返回键、后退、上一页事件(popstate)操作返回键
在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...
- jquery 监听所有锚点链接实现平滑移动
jquery 监听所有锚点链接实现平滑移动,地址栏上不会改变链接地址 //监听所有锚点链接实现平滑移动 $('a[href*=#],area[href*=#]').click(function() { ...
- 监听浏览器返回,pushState,popstate 事件,window.history对象
在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...
- JS实时监听浏览器宽度的变化
boot:function(){ //加载页面时执行一次 changeMargin(); //监听浏览器宽度的改变 window.onresize = function(){ changeMargin ...
- jQuery监听事件经典例子
关键字:jQuery监听事件经典例子 js代码: ============================================================ $(function( ...
- js监听浏览器tab窗口切换
js监听浏览器tab窗口切换 ——IT唐伯虎 摘要:js监听浏览器tab窗口切换. if (document.hidden !== undefined) { document.addEventLis ...
随机推荐
- Java复习5.面向对象
Java 复习5面向对象知识 20131004 前言: 前几天整理了C++中的面向对象的知识,学习Java语言,当然最重要的就是面向对象的知识,因为可以说Java是最正宗的面向对象语言,相比C++,更 ...
- django中如何将多个app归到一个目录下。
1.当startapps 生成多个app后,为了便于管理,可新建一个apps目录,把应用全部剪切进apps. 如果是在pycharm中,会提示是否自动更新路径,这里要全部选择取消. QQ群交流:697 ...
- 如何在非Spring管理的类中使用Spring加载的bean
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> < ...
- -Linux下的虚拟机安装与管理
一.虚拟机安装 首先安转之前,要提前下载一个镜像,这里是:rhel-server-7.0-x86_64-dvd.iso 1)图形化方法 [1]在本机打开终端,切换到超级用户下.输入命令:virt-ma ...
- c# 文件日志处理 需要log4net配置
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- 一段处理json的C#代码
服务器端: using Newtonsoft.Json; using Newtonsoft.Json.Linq; public ActionResult GetGatherData() { IList ...
- Swift UIAlertController、UISegmentedControl
// MARK: 提示框 func _initAlertView() { let btn = UIButton(type: UIButtonType.ContactAdd) btn.frame = C ...
- 掌握Git撤销操作,随心所欲控制文件状态
本文主要讨论和撤销有关的 git 操作.目的是让读者在遇到关于撤销问题时能够方便迅速对照执行解决问题,而不用去翻阅参数繁多的 git 使用说明. 一开始你只需了解大致功能即可,不必记住所有命令和具体参 ...
- php 配置上传大文件
打开php.ini,首先找到file_uploads = on ;是否允许通过HTTP上传文件的开关.默认为ON即是开upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就 ...
- [译]TLS中的RC4被攻破了,现在该怎么办?
原文链接:https://community.qualys.com/blogs/securitylabs/2013/03/19/rc4-in-tls-is-broken-now-what 原文发表时间 ...