移动端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 ...
随机推荐
- CISCO 关闭4786端口解决方法
先确认交换机是否支持smart install服务 检查命令如下: switch#show vstack config | inc Role Role:Client (SmartInstall ena ...
- python笔记25-sys模块
import sys#sys.argv命令行参数List,第一个元素是程序本身路径# sys.exit('xxxxx')#退出程序,正常退出时exit(0)# print(sys.version) # ...
- python的迭代器
迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的ge ...
- sklearn中树模型可视化的方法
在机器学习的过程中,我们常常会用到树模型的方式来解决我们的问题.在工业界,我们不仅要针对某个问题利用机器学习的方法来解决问题,而且还需要能力解释其中的原理或原因.今天主要在这里记录一下树模型是怎么做可 ...
- centos7:ftp上传文件
ftp> lcd /var/www/sss 上传文件的地址还一种上传方式ftp> passivePassive mode off.ftp> passivePassive mode ...
- mknod语法
1.语法 mknod [选项] 设备名 设备类型 主设备号 次设备号 2.选项参数列表 选项 说明 --version 显示命令版本信息 --help 显示帮助信息 -m | - ...
- leetcode题解 7.Reverse Integer
题目: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 E ...
- Nginx+Tomcat配置负载均衡-动静分离(二)
配置动静分离的时候遇到了一些问题,一个是配置nginx配置文件有问题导致访问不到服务器,另一个问题是配置静态资源的路径和实际的资源目录不匹配导致404,502等错误 结合上一篇的基础,在此将动静分离的 ...
- WEB学习笔记13-高可读性的HTML之精简HTML代码/过时的块状元素和行内元素
<a id="more-intro">点击此处 <img src="down-arrow.png" /></a> (1)删除 ...
- Linux安装jdk-8u161-linux-x64
最基本的操作,有一些细节需要处理,这次主要列出来步骤,其实步骤在网上一搜就有,这里只是根据个人的操作进行一些整合和注意事项的提醒罢了. 1.卸载原先的java jdk 这一步的目的是,很多Linux版 ...