繁体   English   中英

如何检测iPhone上滚动的页面比例?

[英]How can I detect what proportion of a page has been scrolled through on iPhone?

我想计算用户向下滚动页面的比例。 我这样做的逻辑涉及以下计算:

(pageYOffset + innerHeight) + document.documentElement.offsetHeight

当用户到达页面底部时,它应该(大约)等于1。

根据此页面 ,以下不平等应始终成立:

document.documentElement.offsetHeight >= pageYOffset + innerHeight

但是,当我通过XCode运行iOS模拟器-iPhone 6 / iOS 8.1并滚动到屏幕底部时,我得到以下数字, pageYOffset实际上超过document.documentElement.offsetHeight

pageYOffset = 1809
innerHeight = 628
pageYOffset + innerHeight = 2437
document.documentElement.offsetHeight = 1577 // surprisingly small
document.documentElement.scrollHeight = 1577
document.documentElement.clientHeight = 559

通过XCode运行iOS Simulator-iPad Air / iOS 8.1时,两个不等式的值更接近:

pageYOffset = 1286
innerHeight = 985
pageYOffset + innerHeight = 2271
document.documentElement.offsetHeight = 2270
document.documentElement.scrollHeight = 2270
document.documentElement.clientHeight = 960

请问对此有解释吗? 有没有更好的方法来计算已滚动页面的比例?

通过复制JQuery方法,我已经达到了预期的结果:

var d = document.documentElement, b = document.body;
var documentHeight = Math.max(d.scrollHeight, d.clientHeight, d.offsetHeight,
                              b.scrollHeight, b.offsetHeight);

document.body.scrollHeight比其他四个字段大,给了我想要的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM