微信浏览器自带的返回上一页的停留位置 scrollTop

2024-06-11 17:18

本文主要是介绍微信浏览器自带的返回上一页的停留位置 scrollTop,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们做过微信的应该都知道,微信自带的返回上一页,就是重新打开页面。并不是返回历史页面。我们PC端的浏览器是返回历史页面。点击返回页面之后 上一个页面的scrollTop还是之前没有进入新页面的位置。

我看了下京东的微信网站。果然和我想到的方法一样。利用sessionStorage HTML5本地存储 进行存储位置scrollTop以及加载了多少次ajax次数 微信返回上一页(当前页面)之后。就会onload一下。设置最后一次scrollTop的值。以及一次性通过ajax传递之前加载的次数size渲染页面。这样在微信里面就可以实现和PC一样的效果。

代码如下:

var c=0,matter=el(document,".matter",1);window.οnlοad=function(){var a=b=null;if(window.sessionStorage){a=parseInt(sessionStorage.getItem("top"));b=parseInt(sessionStorage.getItem("size"));//6是AJAX 每次请求多少个ddnum=6*b;c=b?b:0;// ajax渲染for (var i = 0; i < num; i++){var dd=document.createElement("dd")dd.innerHTML="<a href='./source.html'><img src='images/1.jpg' alt='' /><div class='sug'><h2>魔力魔力魔力魔力魔力魔力魔力魔...</h2><p>收获佣金<b>¥106.00</b></p><p class='num'>点击量  125"+i+"</p></div></a>"matter.querySelector("dl").appendChild(dd);};alert(a);document.body.scrollTop=a;}}        window.οnscrοll=function(){var tops=document.body.scrollTop,height=document.documentElement.scrollHeight,scrollbottom=height-_height-tops; console.log("top:"+tops+"height:"+height+"scrollbottom:"+scrollbottom+"_height"+_height);if(window.sessionStorage){sessionStorage.setItem("top",tops);sessionStorage.setItem("size",c);}if(scrollbottom==0||scrollbottom==-1){$.ajax({//type: 'GET',//url: './',//data: { size: 6 },//dataType: 'json',//timeout: 300,beforeSend:function(){$(".panle").removeClass("pon");},success: function(data){ $(".panle").addClass("pon");for (var i = 0; i < 6; i++){var dd=document.createElement("dd")dd.innerHTML="<a href='./source.html'><img src='images/1.jpg' alt='' /><div class='sug'><h2>魔力魔力魔力魔力魔力魔力魔力魔...</h2><p>收获佣金<b>¥106.00</b></p><p class='num'>点击量  125"+i+"</p></div></a>"matter.querySelector("dl").appendChild(dd);};//正常状态请求了多少AJAXc++;},error: function(xhr, type){alert('Ajax error!')}})}}          

代码是我之前一个项目上的demo代码。重点就是 sessionStorage 对了 说道sessionStorage 我说一下为什么没用localStorage  localStorage是永久的。这样就会有一个问题,当前退出了这个网站之后 下次打开网站 进入这个页面。那么你最后一次离开的值依然存在在本地存储里面。用户体验就不好了。sessionStorage就不错,因为是临时性的。关闭了网站,下次进入的时候就是重新开始保存计算。

定义了一个全局变量c。还有a,b是获取sessionStorage里面的scrollTop 和ajax的值。onscroll的时候记录这两个值实时保存到sessionStorage里面。每次AJAX请求成功了,就c++一下。

c=b?b:0 这个意思就是 如果请求了ajax c的值就是等于b否则等于0.这样做因为c是全局变量,每次重新打开页面它都会等于0的.

知道了最后一次scrollTop和size  OK了 我们就直接AJAX一次行渲染出来结构。在设置scrollTop位置。最好是先渲染再设置。反过来scrollTop会出现BUG。因为页面结构没有这么多。位置停留会出现在最底部。并没有到最后一次的位置。加载之后 结构躲起来了,页面高度也有了。这样scrollTop就可以好好设置。

QQ 295989501 欢迎一起交流学习

这篇关于微信浏览器自带的返回上一页的停留位置 scrollTop的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051790

相关文章

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can