如何防止浏览器滚动,或者如何让浏览器不断滚动到固定的位置?
我正在为Nintendo 3DS浏览器开发一个库。我使页面完全适合浏览器,但向上箭头使其滚动,因为底部屏幕是唯一被识别为可见区域的窗口。
我想这样做,所以div #bottomScreen是底部屏幕中唯一的东西,禁用滚动是我能想到的唯一可行的方法。
我已经想出如何通过
将其滚动到所述位置document.body.scrollTop = 220;
如何让它不断进入这个位置?
使用setTimeout创建重复计时器并将上面的代码放入其中将不起作用。我相信这是因为这仅适用于页面加载之前。
关于如何执行它的任何建议?
答案 0 :(得分:1)
更优雅的解决方案是在调用该方法时禁用滚动(从顶部或其他任何位置滚动到220的位置),并在用户采取适当的操作等时重新启用它... jQuery示例:
$('body').css('overflow', 'hidden'); // removes scrollbars entirely
$('body').css('overflow', 'auto'); // re-enable scrolling
否则使用setInterval()以非常短的间隔(如10ms)重复触发滚动功能。如果你打算这样做,最好添加一些逻辑来查看窗口是否已经滚动到大约正确的位置(允许+/- 10px或其他东西),这样对用户来说并不是非常刺耳。 / p>
答案 1 :(得分:1)
即使在页面加载后它也应该工作。这是代码,虽然我不确定代码的意图是什么,可能会让用户烦恼。
setInterval( function(){ document.body.scrollTop = 200 }, 500 ); // set your time
答案 2 :(得分:0)
我在某些网站上看到过的最佳方式(比如我认为推特或推出图片时的脸谱),这就是将溢出属性设置为隐藏在body元素上。这可以防止任何滚动,因此当您这样做时,您需要担心的是内容的位置。
我猜你需要将内容包装在某种容器元素中,当你更改body元素的溢出时,你还要设置容器的y坐标以显示正在查看的页面的特定区域。
这是迄今为止我见过的最好的事情,因为它不需要定时器等。
答案 3 :(得分:0)
您可以为滚动事件添加事件侦听器,然后设置位置。