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

标签 javascript iphone xcode dom safari

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

(pageYOffset + innerHeight) + document.documentElement.offsetHeight

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

根据this page ,以下不等式应始终成立:

document.documentElement.offsetHeight >= pageYOffset + innerHeight

但是当我通过 XCode 运行 iOS Simulator - iPhone 6/iOS 8.1 并滚动到屏幕底部时,我得到以下数字,其中 pageYOffset 实际上超过了 document.documentElement。偏移高度:

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 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 比其他四个字段大,给了我想要的结果。

关于javascript - 如何检测 iPhone 上页面滚动的比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371152/

相关文章:

swift - 在 Swift 中选择时如何将 subview 置于最前面?

ios - xCode 4项目模板中的可选框架

ios - iOS SKMaps架构错误

javascript - "Page-Specific Javascript"在 rails 上使用 stimulusjs

javascript - 使用 Javascript 从 DOM 元素添加/删除类的最有效方法是什么?

ios - 根据选择的选项以不同的 View 呈现 View Controller : Swift 4

iphone - UIApplication 的 "windows"值上的 KVO?

javascript - RubyMine 代码重新格式化不尊重 ESLint 配置

javascript - 使用 gulp 部署 Aurelia 应用程序

iphone - 根据特定时区计算日期