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

时间:2015-02-06 17:14:28

标签: javascript iphone xcode dom safari

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

(pageYOffset + innerHeight) + document.documentElement.offsetHeight

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

根据this page,以下不等式应该始终存在:

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模拟器 - iPad Air / iOS 8.1时,不等式两个值更接近:

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

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

1 个答案:

答案 0 :(得分:0)

我通过复制JQuery method

达到了预期的效果
var d = document.documentElement, b = document.body;
var documentHeight = Math.max(d.scrollHeight, d.clientHeight, d.offsetHeight,
                              b.scrollHeight, b.offsetHeight);

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