[英]function scrollPage() does not work on mobile devices
我在 javascript 中有一个 function 需要上下滚动页面,直到用户按下按钮将其禁用。 这是我当前的 function:
var scrollDirection = 1;
function scrollPage() {
if (isScrollMode) {
window.scrollBy(0, scrollDirection); // horizontal and vertical scroll increments
scrolldelay = setTimeout('scrollPage()', 50); // scrolls every 50 milliseconds
if (window.pageYOffset == 0) {
scrollDirection = 1;
} else if (window.pageYOffset == document.body.scrollHeight - window.innerHeight) {
scrollDirection = -1;
}
}
}
到目前为止,此方法适用于计算机,但是,当我在手机上的 google chrome web 浏览器上测试此 function 时,它只会下降而不会上升。 一旦到达页面末尾,它就会停留在那里。 谁能告诉我为什么? 感谢您的帮助!
这是因为window.pageYOffset
返回一个浮点数,在我的例子中78.4000015258789
和document.body.scrollHeight - window.innerHeight
返回一个 integer,在我的例子中是79
。 然后, (78.4000015258789 == 79) = false
您可以更改的是将 1 添加到window.pageYOffset
以获得79.4
并检查window.pageYOffset > (document.body.scrollHeight - window.innerHeight)
这是编辑后的代码(必须有效):
var scrollspeed = 10; var scrollDirection = scrollspeed; function scrollPage() { if (isScrollMode) { window.scrollBy(0, scrollDirection); // horizontal and vertical scroll increments scrolldelay = setTimeout("scrollPage()", 50); // scrolls every 50 milliseconds if (window.pageYOffset == 0) { scrollDirection = scrollspeed; } else if ( window.pageYOffset + 1 > document.body.scrollHeight - window.innerHeight ) { //window.pageYOffset return a float scroll y value, for exemple in my case 78.4000015258789; //We add +1 to obtain 79.4 //(document.body.scrollHeight - window.innerHeight) return a interger of 79 scrollDirection = -scrollspeed; } } } let isScrollMode = true; scrollPage();
<p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p> <p>Lorem</p>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.