移动端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 ...
随机推荐
- 分享:五个非常有用的WP插件
一全老师(www.yiquanseo.com)认为非常有用的几款WP插件,用WordPress做站的可以看下,估计你很可能用得到! 第一款WooCommerce Page Builder: 这款插件是 ...
- 转:LRU算法
LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了.由于无法预测各页面将来的使用情况,只能利用“最近 ...
- python os.walk()遍历文件夹
转自 http://alanland.iteye.com/blog/612459 via @alanland 今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发 ...
- IRP小结 0x01 IRP & IO_STACK_LOCATION(结合WRK理解)
写博客整理记录一下IRP相关的知识点,加深一下印象. 所有的I/O请求都是以IRP的形式提交的.当I/O管理器为了响应某个线程调用的的I/O API的时候,就会构造一个IRP,用于在I/O系统处理这个 ...
- Python之set方法
class set(object): """ set() -> new empty set object set(iterable) -> new set o ...
- apex透视自瞄无后子弹追踪飞天加速辅助
apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助 ...
- 拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)
package com.lanxi.demo2_6; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
- 学习python及Pygame的安装及运行
Python: 注意勾上Add Python 2.7 to PATH,然后点“Install Now”即可完成安装. 或手动修改环境变量,win7:右击我的电脑->属性->高级->环 ...
- while循环与 for循环,函数定义与调用
import turtle turtle.setup(600,400,0,0) turtle.bgcolor('red') turtle.color('yellow') turtle.fillcolo ...
- firefox 屏蔽Backspace按键的后退功能
直接上图