js上拉跳转原理
今天遇到一个需要上拉跳转的地方,其原理跟上拉加载有点类似,代码如下
window.onscroll = function(){
if(getScrollTop() + getClientHeight() == getTotalHeight()) {
//执行跳转 ...对应你跳转的地址
window.location.href = "...";
}
}
应用场景,移动端商品详情页面,通过上拉进入到图文详情。
解释一下:
getScrollTop():获取滚动条卷去高度;
getClientHeight():获取可视区的高度;
getTotalHeight():获取整个页面的整体高度,即滚动条的总长度。
//获取滚动条当前的位置
function getScrollTop() {
var scrollTop = 0;
if(document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if(document.body) {
scrollTop = document.body.scrollTop;
}
return scrollTop;
} //获取当前可视范围的高度
function getClientHeight() {
var clientHeight = 0;
if(document.body.clientHeight && document.documentElement.clientHeight) {
clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight);
} else {
clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
}
return clientHeight;
} //获取文档完整的高度
function getTotalHeight() {
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
}
http://www.cnblogs.com/jiangbanji/p/6026755.html(这是我的后续文章)
js上拉跳转原理的更多相关文章
- iOS 下拉刷新-上拉加载原理
前言 讲下拉刷新及上拉加载之前先给大家解释UIScrollView的几个属性 contentSize是UIScrollView可以滚动的区域. contentOfinset 苹果官方文档的解释是&qu ...
- Swiper+JS 上拉刷新
JS // 上拉刷新 var page = 2; var isAjax = true;//加载数据前状态 $( ...
- zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- js上拉加载、下拉刷新的插件
之前在网上找那种下拉刷新,上拉加载的插件,有一款IScroll,但是用起来太麻烦,于是就自己写了款,但依赖于jquery.js,bug肯定有,希望评论提出. js: /* 简洁的下拉刷新,上拉加载插件 ...
- js上拉加载下拉刷新
写在前边: 工作需要,使用ajax在原来的列表下边使用ajax请求后台数据,拼接在列表最下边,在github转了好久,发现了一个bug极多的js刷新插件,尝试了一个下午,就在快放弃的时候,发现下边有留 ...
- js上拉加载
<ul class="u-f-log"> <li class="u-f-log-alone" v-for="item in log& ...
- 关于分页接口设计(下拉刷新上拉加载原理,解决page count请求重复数据的问题)
- JS 上拉加载
$(document).ready( function(){ $contentLoadTriggered = false; $("#mainDiv").scroll(functio ...
- js上拉刷新数据
$(window).scroll(function () { //下面这句主要是获取网页的总高度,主要是考虑兼容性所以把Ie支持的documentElement也写了,这个方法至少支持IE8 var ...
随机推荐
- POJ 3414 Pots(BFS)
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Description You are g ...
- centos7安装mariadb后无法启动的问题
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方 ...
- SAP HANA中创建层次分析视图(Hierarchy Analytic View)
1. 创建层次Attribute View: ATTR_PRODUCT_HIERACHY ref: http://www.cnblogs.com/omygod/archive/2013/04/30/ ...
- php 便利数组方法
数组在PHP中是一个非常强大的武器,用起来方便.容易,由于使用起来异常灵活,用它就可以实现数据结构中的链表.栈.队列.堆以及所谓的字典.集合等,也可以转换成XML格式. 1.使用for for语句遍历 ...
- ssh配置导致Ansible并发失败
Ansible并发失败原因, fork=100. 执行playbook时候没有并发 vim /usr/lib/python2.7/site-packages/ansible/runner/conne ...
- js 遍历json
JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/" ...
- ecshop 分页小记
ecshop 分页是ajax请求的,必须在主文件里有个 act = query 处理,分页会请求这个act <?php //获取列表 if($_REQUEST['act']=='list'){ ...
- 一箭N雕:多任务深度学习实战
1.多任务学习导引 多任务学习是机器学习中的一个分支,按1997年综述论文Multi-task Learning一文的定义:Multitask Learning (MTL) is an inducti ...
- response.setContentType与 request.setCharacterEncoding 区别
1.request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值的编码 2.response.setContentType指定 HTTP 响应的编码 ...
- 初学laravel框架,解决访问路由404的问题
运行环境:windows+phpstorm+Nginx 第一步:添加 PHP Built-in Web Server 第二步:配置路径和端口(路径是你的laravel中的pubilc,端口是你没有占用 ...