移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法
1、移动端上拉加载
网上有很多成熟的插件,比如iscroll。在这里介绍一下用jquery和js写的上拉加载方法。使用原生的去写上拉加载更多需要三个高度去做对比,以新闻类列表举例,首先需要整个dom的高度,其次需要移动设备窗口的高度,最后需要滚动条距离顶部的高度,移动设备的高度加上滚动条距离顶部的高度等于dom的高度时,表示已经滑动到底部,进而加载下一页,监听滚动条的滑动事件使用scroll()方法。当然这里也可以进行无感知加载,就是当移动设备高度和滚动条高度相加和dom高度接近时就加载下一页的数据。
2、移动端列表查看详情
以新闻列表为例,加载到第十页查看一条新闻的详情,查看详情后需要使用手机的物理回退按键回退到列表页,并且是当前点击的位置,因为移动端浏览器是在一个窗口下加载页面的,只要url地址发生变化,整个页面就会重新加载。如何解决这个问题呢,在这里提供两个思路:一、使用锚点定位和控制div显示隐藏属性。列表页是一个div用于显示列表,详情页是一个div用来展示详情,使用window.onhashchange方法用来监听锚点的变化,一个新闻对应一个id,通过监听锚点变化获取#号后面的新闻id,控制列表div隐藏和详情div的显示,进而展示详情,回退的时候同样使用window.onhashchange来监听,控制列表div的显示和详情div的隐藏。二、使用localStrrage或者sessionStorage。在这里详情页是一个单独的页面,从列表页到详情页的时候,需要先把当前新闻的dom内容、page页码和滚动条距离顶部的距离保存,保存后再跳转到详情页,从详情页返回列表页的时候,虽然url地址发生了变化,按道理来说应该重新初始化列表页面,在这里加上一个判断,判断是否存在页面存储的localStorage或者sessionStorage,如果存在就使用缓存的数据直接追加到页面上,包括滚动条的高度和page页码,如果不存在就重新初始化整个列表页面,这样就做到了查看详情,返回还是在原来的位置。
3、移动端查看原文使用iframe嵌套第三方页面
以新闻列表为例,在新闻详情页面查看原文链接的时候,如果使用iframe引入第三方的url地址正常是可以访问的,但是如果有些网站加了同源限制,禁止iframe引入自己的网站页面,这时候我们应该怎么办呢?
我们使用a标签直接跳转第三方页面。首先在查看新闻详情的时候把已有的dom、page和scrollTop值用localStorage存储起来,在这里为什么不用sessionStorage呢?因为当使用a标签跳转的时候,在移动端页面都是在一个窗口,两个url地址不是同源的话,之前的sessionStorage会消失,所以这里使用localStorage。查看原文后,手机物理回退到详情页的时候首先判断是否含有localStorage,有就直接展示缓存的数据,没有就重新加载列表,在这里展示完缓存数据后就要把localStorage清除掉,如果不清除的话,你刷新页面加载的还是你缓存的数据。接着判断url里面是否含有锚点,如果有代表是查看的详情页,取出id,隐藏列表页div,展示详情页div。
以上是在实际做移动端web项目时遇到的问题以及解决办法,在这里只提供了大致的思路,如果有不明白的或者有疑问的欢迎留言~,当然如果有更好的解决办法的话,欢迎指正!
移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法的更多相关文章
- wepy小程序实现列表分页上拉加载(1)
使用wepy开发微信小程序商城第一篇:项目初始化 使用wepy开发微信小程序商城第二篇:路由配置和页面结构 列表页效果图: 1.新建列表页 (1)在pages里面新建一个list.wpy文件 初始代码 ...
- wepy小程序实现列表分页上拉加载(2)
第一篇:wepy小程序实现列表分页上拉加载(1) 本文接着上一篇内容: 4.优化-添加加载动画 (1)首先写加载动画的结构和样式 打开list.wpy文件 template结构代码: <temp ...
- 移动端h5列表页上拉加载更多
背景 上星期公司要求做一个回收书籍的h5给安卓用,里面有一个功能是回收记录列表.设计师那边出的稿子是没有要求分页或者是上拉刷新的,但是众所周知,列表页数据很多的情况下,h5加载是很慢的.所以我一开始是 ...
- vue.js移动端app实战4:上拉加载以及下拉刷新
上拉加载以及下拉刷新都是移动端很常见的功能,在搜索或者一些分类列表页面常常会用到. 跟横向滚动一样,我们还是采用better-scroll这个库来实现.由于better已经更新了新的版本,之前是0.几 ...
- 微信小程序开发——列表分页上拉加载封装实现(订单列表为例,订单状态改变后刷新列表滚动位置不变)
业务需求: 业务需求是给订单列表添加分页功能,也就是上拉加载这种每次只请求加载固定数量的数据. 需求分析: 对业务来说就是简单的分页上拉加载,但是对于技术实现来说,除了要处理分页数据的累加加载,还要处 ...
- Flutter 流式布局列表实例+上拉加载
页面变化的几种方式: 一.StatefulWidget的setState形式 先声明两个变量. ; List<Map> list = []; 写了一个方法,获取数据: void _getH ...
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果
最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多
最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...
- 原生js移动端touch事件实现上拉加载更多
大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: //获取要操作的元素 var objSection = document.ge ...
随机推荐
- Apache代理转发http到https
site.conf ProxyPass /maps https://maps.googleapis.com/maps LoadModule proxy_module modules/mod_proxy ...
- 高通 MSM8K bootloader之一: SBL1
MSM8K Boot Flow 转自:http://www.cnblogs.com/liang123/p/6325257.html http://blog.csdn.net/F ...
- 模块化 Sea.js(CMD)规范 RequireJS(AMD)规范 的用法
插入第三方库AMD CMD都 一样 如:JQ(再JQ源码里修改) 使用seajs的步骤 1.HTML里引入seajs <script src="./lib/sea.js"& ...
- 第5次作业 -- 基于Jmeter的 性能测试
1.1 实验步骤(5分): 首先安装JMeter,下载之后cd到bin目录下运行sh jmeter就会完成安装,跳出来一个GUI界面 然后添加HTTP请求,在设置里面填写目标网站:cs.ntu.edu ...
- 初学者--oracle安装完后出现的一些问题
对于初学者安装数据库后,立马回运行数据库,看是否安装成功,但oracle安装完成,其中有些都是默认状态,所以需要手动修改和添加.例如这个问题 1.pl/sql developer was not te ...
- python练习:实现一个整数数组里面两个数之和为183的所有整数对
l1 = [183,0,1,2,-184,367] num = [] for i in range (0,len(l1)): for l in range (i+1,len(l1)): if l1[i ...
- Groovy学习笔记-动态类型
1.respondsTo方法判断对象是否存在指定方法 interface IHelp{ void helpMoveThings() } class Man implements IHelp{ void ...
- java面向对象编程(七)--四大特征之多态
1.多态概念 多态性是对象多种表现形式的体现.比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴等等.那么我到宠物店说"请给我一只宠物&quo ...
- 微信浏览器软键盘弹出与页面resize的问题
使用微信打开网页,弹出软键盘时遇到的兼容问题 过去开发中遇到过很多这种情况,页面底部需要固定定位一个按钮,广告栏或者菜单栏,页面中有表单项需要填写,在打开手机虚拟键盘的时候,底部固定定位的元素会处在软 ...
- idea添加JPA导出实体类
https://blog.csdn.net/liu_yulong/article/details/72910588