JavaScript scrollTo方法什么都不做?

所以我绝望地试图让一些滚动function在页面上工作。 没有运气后,我决定坚持使用window.scrollTo(0, 800); 在我的页面上,看看我是否可以进行任何滚动。 什么都没发生。 我有一个扩展的手风琴,然后我想滚动到其中的特定元素。 但是现在我很乐意看到东西滚动。 有人碰到这个吗?

谢谢!

如果您有这样的事情:

 html, body { height: 100%; overflow:auto; } 

如果body和html都具有100%的高度定义并且还启用了滚动,则window.scrollTo(和所有派生的滚动机制)不起作用,尽管显示滚动条(可由用户使用),当内容超出时那100%的身高。 这是因为您看到的滚动条不是窗口的滚动条,而是主体的滚动条。

解:

 html { height: 100%; overflow:auto; } body { height: 100%; } 

我能够使用jQuery方法animate()解决这个问题。 以下是我使用的实现示例:

 $('#content').animate({ scrollTop: elementOffset }, 200); 

选择器获取ID =“content”的div。 然后我使用scrollTop作为选项应用animate方法。 第二个参数是动画持续时间的时间(以毫秒为单位)。 我希望这有助于其他人。

我使用setTimout修复了这个问题。 我正在使用angularjs但也许它可以帮助在香草js。

  setTimeout(function () { window.scrollTo(0, 300); },2); 

有时它不仅仅是css问题,对我而言浏览器是罪魁祸首。 我必须通过这段代码来解决它。

  if ('scrollRestoration' in window.history) { window.history.scrollRestoration = 'manual' } 

它允许开发人员获取滚动更改的所有权。 在这里阅读更多相关信息

我今天遇到了同样的问题然后我发现当我拿出自动生成的doctype块时:

  

window.scrollTo(0,800)开始与我最初尝试使用的ExtJs scrollTo()函数一起工作。 我把块放回去,它停止工作。 我不知道这是不是你遇到的(2年前),但希望这有助于其他人遇到同样的问题。

检查你的标签插在哪里你的滚动得到一个CSS溢出[/ – xy]:hidden。 它修复了这个bug

首先,你的页面是否足够大,可以滚动(即使它在iframe中)? 如果没有,或者你不确定,做一个巨大的div,然后在它下面放一些东西。 尝试滚动到那个。

接下来,如果您在iframe中滚动,请将您的代码放在与帧源相同的页面上。 这样您就不必担心在其他窗口中获取文档或特定元素,这可能很棘手。 哦,是的,你确定你的那部分是正确的吗? 通过Firebug逐步完成可以帮助您。

最后,在应该导致滚动发生的行上放置一个断点(使用Firebug)。 它是否达到了断点? 如果没有,您的代码不会执行,滚动不是您的问题。

(我回答了这个问题,并提供了前一个问题的支持背景。)

编辑:

滚动是逐个窗口完成的。 如果你在一个无法滚动的框架中,那么什么都不会滚动。 如果希望滚动框架中的元素,请将该元素的偏移量添加到其当前窗口,并将其添加到包含框架的偏移量中。 这应该够了吧。

获取此代码: http : //www.java2s.com/Code/JavaScriptReference/Javascript-Methods/scrollToExample.htm并另存为html文件。 请注意它如何硬编码比浏览器视口大的div。 您可能需要在页面底部添加内容才能滚动甚至工作。

显然,如果您的页面至少(viewport.height – 800)很高,它将不会滚动。 你看到滚动条吗? 否则你做错了什么。