【WEB】jQuery获取页面回滚或跳转事件
1、效果:

2、Jquery:
//记得引入jquery.min.js <script type="text/javascript">
$(function(){
window.onbeforeunload=function(a){
console.log(a);
return false;
}
});
</script>
3、console.log(a);

///////////////////////////// 我是华丽的分割线 ///////////////////////////////
## (下面的cookie方法完全可以使用sessionStorage来替代,效果更好)##
sessionStorage方法:
<script type="text/javascript" src="jquery.min.js"><script>
<script type="text/javascript">
$(function(){
window.onbeforeunload=function(a){ //页面跳转走之前的操作,(return false;)可阻断关闭和跳转
console.log("当前页面滚动高度是::"+$(window).scrollTop());
sessionStorage.setItem("scrollTop",$(window).scrollTop());
console.log("当前页面的sessionStorage值是:"+sessionStorage.getItem("scrollTop")); //return false;
}
window.onload=function(){ //页面加载操作,进行数据渲染和高度滚动
if(sessionStorage.getItem("scrollTop")!==undefined && sessionStorage.getItem("scrollTop")>0){
$("html,body").animate({scrollTop:sessionStorage.getItem("scrollTop")}, 1000);
}
}
}); </script>
---------------------------------------------------------------------------------------------------------------------------
cookie方法:
下面介绍一种利用jquery的cookie进行页面返回跳转到历史浏览位置方法:
以前也做过差不多的功能,想了好久想到了解决方法,这个方法是一个通过的方法,不需要每个页面都写一次,这是利用cookie完成的,把记录的滚动条的位置放入cookie,下次进入这个页面的时候读取cookie,并设置滚动条位置为cookie中的值,从而让滚动条回到上一次的位置,实现返回上一次浏览的位置,如果多个页面要使用这个功能,那就要定义多个cookie来记录不同页面滚动高度,为了解决这个问题使用了一个相对简单的方法,就是cookie的值是以页面的文件名命名,js中创建cookie时,自动获取网页路径,截取页面的文件名,并将cookie名设置为此文件名,这样就可以避免多次命名,从而减少了代码
具体实现的代码如下:
<script type="text/javascript" src="jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="jquery.cookie.js"></script> <script type="text/javascript">
/*返回上次浏览位置*/
$(function () {
var str = window.location.href;
str = str.substring(str.lastIndexOf("/") + 1);
if ($.cookie(str)) {
$("html,body").animate({ scrollTop: $.cookie(str) }, 1000);
}
else {//首次进入
//do something,
}
}); $(window).scroll(function () {
var str = window.location.href;//http://www.baidu.com/index.php?do=login&user=liwei
str = str.substring(str.lastIndexOf("/") + 1);
var top = $(document).scrollTop();
$.cookie(str, top, { path: '/' });//存储名称、变量值、【有效期:默认session】、路径
return $.cookie(str);//Boolean,return非必须要的
})
/*返回上次浏览位置*/ </script>
代码可能有改进的地方,但能实现效果,ajax动态加载的页面也测试过可用,把代码贴在这里给有需要的人一点帮助
//////////////////////////// 我是华丽的分割线 ////////////////////////////
【WEB】jQuery获取页面回滚或跳转事件的更多相关文章
- js 和 jquery 获取页面和滚动条的高度 视口高度文档高度
js 和 jquery 获取页面和滚动条的高度 //页面位置及窗口大小 function GetPageSize() { var scrW, scrH; if(window.innerHeight & ...
- JavaScript、jQuery获取页面及个元素高度、宽度
Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.client ...
- jQuery 获取页面元素的属性值
获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...
- jQuery获取页面及个元素高度、宽度【转】
获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...
- jQuery获取页面及个元素高度、宽度
获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档 ...
- 如何用jquery获取页面下HiddenField的值··
怎么用jquery获取页面上HiddenField的值·· 怎么用jquery获取页面上HiddenField的值··?HiddenField的值是从后台赋值的··· 先赋值给Hiddenfield ...
- jquery获取页面相关尺寸
$(windows).width();获取页面可视宽度 $(windows).height();获取页面可视高度 $(document).height();获取页面内容的总高度 $(document) ...
- JQuery 获取页面某一元素在屏幕上的位置
获取页面某一元素的绝对X,Y坐标 var X = $('#ElementID').offset().top;//元素在当前视窗距离顶部的位置 var Y = $('#ElementID').offse ...
- JQuery 获取页面某一元素的位置
获取页面某一元素的绝对X,Y坐标 var X = $('#ElementID').offset().top; var Y = $('#ElementID').offset().left; 获取相对(父 ...
随机推荐
- 【BZOJ 1018】【SHOI 2008】堵塞的交通traffic
http://www.lydsy.com/JudgeOnline/problem.php?id=1018 线段树维护连通性. 把每一列看成一个节点,对于线段树上的每一个节点,维护8个信息,前6个字面意 ...
- 【hihoCoder 第133周】【hihoCoder 1467】2-SAT·hihoCoder音乐节
http://hihocoder.com/problemset/problem/1467 2-sat模板...详细的题解请看题目里的提示. tarjan模板打错again致命伤qwq #include ...
- Activity(活动)生命周期(1)--返回栈
Android是使用任务(task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back stack).栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的 ...
- Problem G: 部分复制字符串
#include <stdio.h> #include <string.h> int main() { void copystr(char *,char *,int); int ...
- [转]spring security的原理及教程
Authentication:认证 spring security使用分类: 如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1.不用数据库,全部数据写 ...
- Android——Activity and Service
参考博客:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html http://www.cnblogs.com/feisky/ar ...
- ARM的存储器映射与存储器重映射
转:http://www.360doc.com/content/12/1006/00/1299815_239693009.shtml arm 处理器本身所产生的地址为虚拟地址,每一个arm芯片内都有存 ...
- MFC绘制棋盘格
(1)新建立一个MFC空白的基于视类的工程 (2)在View类中重写OnPaint消息 void CMy005View::OnPaint() { CPaintDC dc(this); // devic ...
- java 多线程处理一个list的集合
原文:http://blog.csdn.net/jenny8080/article/details/52100312 import java.util.ArrayList; import java.u ...
- PHP版本切换
前言 php是为了快速构建一个web页面而迅速被大家广为接受的开源语言,通过不断发展已经有了很多的php开源系统,满足了目前大部分用户的站点需求.1995年初php诞生到现在已经存在多个版本,并且每个 ...