无法可靠地检测 iPhone 纵向和横向模式之间的底部滚动
Can't reliably detect scroll bottom between iPhone portrait and landscape modes
我正在尝试检测用户何时滚动到文档底部。我当前的解决方案在桌面浏览器中运行良好,并且在横向模式下使用移动 Safari(还有 1px 的差异,我还无法解释)。但是,我在横向模式下的移动野生动物园得到了完全不同的结果。
我这里有一个工作示例:http://dl.dropbox.com/u/5634676/checkbottom.html
检测例程归结为:
if ($(window).scrollTop() + $(window).height() >= $(document).height())) {
// Bottom reached
}
您能否解释这两种模式之间的区别并帮助我可靠地检测用户何时滚动到文档底部?
更新
我已经更新了链接的示例,修复了 theflyingbrush 指出的错误。横向和纵向模式的结果现在更接近(但仍存在尚未解释的52px方差)。但重要的是,对于纵向和横向模式,仍然无法检测到滚动到页面底部。
我在IOS移动设备上遇到了同样的问题。将"文档"替换为"正文"解决了我的问题。
if($(window).scrollTop() + $(window).height() > $('body').height() - 200 )
此外,最好检查屏幕底部是否"接近"。
当设备方向改变时,窗口的高度会发生变化,从而使存储在文档就绪上的窗口高度变量无效。通过侦听方向更改事件并重新计算窗口高度来更新它。像这样:
window.addEventListener("orientationchange", change);
function change(){
windowHeight = $(window).height();
}
编辑:混淆了这一点,因为它还涉及视口比例。这是工作版本的链接:http://appunit.co.uk/scroll
您需要在计算中考虑地址栏的高度,因为 $(window).scrollTop() 返回 0,直到地址栏滚动到屏幕外。因此,将地址栏高度(60px)添加到scrollTop以获得滚动的距离。如果您尚未在 html 中设置指定宽度=设备宽度的视口元标记,则会变得更加复杂。在这种情况下,视口将从 320x356 缩放到 980x1091,并且地址栏占用的虚拟高度量也会缩放。总结:
var scaleFactor = ($(window).height()/356).toPrecision(2);
// toPrecision(2) prevents rounding error..
var addressBarHeight = 60 * scaleFactor;
// and when calculating scrollTop
var scrollTop = addressBarHeight + $(window).scrollTop();
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何仅在横向模式下显示页面
- 当我们的设备从纵向模式定向到横向模式时,当地图完全加载时,是否有任何 Map 事件被触发
- Fullpage.js在横向模式下无法在iOS上正常缩放
- 响应式设计:纵向/横向模式下的图像
- 电话间隙暂时禁用横向模式
- 如何使用PhoneGap + Cordova在Android应用程序中启用横向和纵向模式
- 在iPad中,当方向从横向模式变为纵向模式时,页面会缩小
- 如果用户在我的响应网站中的纵向模式下单击切换按钮,则导航菜单将在横向模式下消失
- 我可以强制iPad只在横向模式下显示网站吗
- 如何修复移动中的横向模式HTML5 web应用程序
- 有人能够使用CSS3在Chrome浏览器中成功地以横向模式打印吗
- 在移动设备上保持网站处于横向模式
- 强制网站仅以横向模式显示
- 如何隐藏Safari的工具栏时,方向改变为横向模式
- 使用横向模式打印到硬拷贝
- Javascript图像预览总是在横向模式错误
- 我可以确定如果一个设备是在纵向或横向模式使用jquery
- 无法可靠地检测 iPhone 纵向和横向模式之间的底部滚动
- 防止android默认浏览器在横向模式下缩放