2011-12-27 119 views
0

如何让浏览器不滚动,或者如何让浏览器连续滚动到固定位置?如何让浏览器保持固定位置滚动?

我正在为任天堂3DS浏览器的库工作。我使页面完全适合浏览器,但向上箭头使其滚动,因为底部屏幕是唯一被识别为可见区域的窗口。

我想使它成为div #bottomScreen是底部屏幕中唯一的东西,禁用滚动是我能想到的唯一工作。

我想通了如何通过

document.body.scrollTop = 220; 

我怎样才能使它不断地去这个位置滚动到该位置?

用setTimeout制作一个重复的计时器,并将上面的代码放入它将不起作用。我相信这是因为这只在页面加载之前有效。

有关如何实施它的任何建议?

+0

建议:使用'setInterval'而不是'setTimeout' – 2011-12-27 20:14:02

回答

1

应该甚至在页面加载工作的最好的事情。这是代码,尽管我不确定代码的意图是什么,可能会让用户感到烦恼。

setInterval(function(){ document.body.scrollTop = 200 }, 500); // set your time 
+0

这完美的作品! – Tgwizman 2011-12-27 20:26:44

1

更优雅的解决方案是在调用该方法时禁用滚动(从顶部或其他位置滚动到220的位置),并在用户采取适当的操作时重新启用它。 。jQuery示例:

$('body').css('overflow', 'hidden'); // removes scrollbars entirely 
$('body').css('overflow', 'auto'); // re-enable scrolling 

否则使用setInterval()以非常短的时间间隔(如10ms)重复触发您的滚动功能。如果你打算这么做,那么添加一些逻辑来判断窗口是否已经滚动到大约正确的位置(允许+/- 10像素或者什么)是明智的,所以对于用户来说不会非常不和谐。

+0

实际上,这种情况不起作用。我会修复这个问题 – Tgwizman 2011-12-27 20:19:38

0

我在一些网站上看到的最好的方式(比如Twitter,我想或者当图像弹出时),这是设置溢出属性隐藏在body元素上。这可以防止任何滚动,所以你只需要担心内容的位置。

我想你需要将内容包装在某种容器元素中,当你改变body元素的溢出时,你还要设置容器的y坐标以显示正在查看的页面的特定区域。

这是迄今为止我所看到的要达到这样的效果,因为它不需要定时器等

0

你可以添加一个事件侦听scroll事件,然后设置位置即可。