Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';无法可靠地检测iPhone纵向和横向模式之间的滚动底部_Javascript_Jquery_Iphone_Scroll_Detect - Fatal编程技术网

Javascript Can';无法可靠地检测iPhone纵向和横向模式之间的滚动底部

Javascript Can';无法可靠地检测iPhone纵向和横向模式之间的滚动底部,javascript,jquery,iphone,scroll,detect,Javascript,Jquery,Iphone,Scroll,Detect,我试图检测用户何时滚动到文档底部。我目前的解决方案在桌面浏览器中运行良好,在横向模式下与Mobile Safari配合使用(1像素的差异我还无法解释)。然而,我得到了一个完全不同的结果,移动狩猎在景观模式 我这里有一个工作示例: 检测程序可归结为: if ($(window).scrollTop() + $(window).height() >= $(document).height())) { // Bottom reached } 您能否解释这两种模式之间的区别,并帮助我可靠地检

我试图检测用户何时滚动到文档底部。我目前的解决方案在桌面浏览器中运行良好,在横向模式下与Mobile Safari配合使用(1像素的差异我还无法解释)。然而,我得到了一个完全不同的结果,移动狩猎在景观模式

我这里有一个工作示例:

检测程序可归结为:

if ($(window).scrollTop() + $(window).height() >= $(document).height())) {
  // Bottom reached
}
您能否解释这两种模式之间的区别,并帮助我可靠地检测用户何时已滚动到文档底部

更新


我已经更新了链接示例,修复了FlyingBrush指出的错误。横向模式和纵向模式的结果现在更接近了(但仍然有一个尚未解释的52px的方差)。但重要的是,对于纵向和横向模式,仍然没有检测到滚动到页面底部。

当设备方向改变时,窗口的高度会改变,从而使存储在doc ready上的windowHeight变量无效。通过侦听DirectionChange事件并重新计算窗口高度来更新它。比如:

window.addEventListener("orientationchange", change);

function change(){
    windowHeight = $(window).height();
}
编辑:混淆这一点,因为它还涉及视口比例。以下是指向工作版本的链接:

您需要在计算中考虑地址栏的高度,因为$(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(); 

我在IOS移动设备上也遇到了同样的问题。用“正文”替换“文档”修复了我的问题


if($(window).scrollTop()+$(window).height()>$('body').height()-200)
+1:我在开发移动网站时遇到了类似的问题。我一直没找到原因。我的解决方案是增加用户接近底部时的检测区域。向上投票。您正在测试哪些实际设备?这个问题可能与非视网膜显示器和视网膜显示器之间的差异有关。我只是在iPhone4上测试。谢谢你指出这个错误。修复是很重要的,但问题仍然存在,正如我在上面的更新中详细介绍的那样。