2012-10-23 67 views
1

我在Firefox浏览器中遇到过问题。这可能是一个错误,但也许有人知道一个解决方法。在下面的JSFiddle中演示了这个问题:http://jsfiddle.net/F5tdB/这已经在Firefox 12.0,15.0.1,16.0.1上测试过。Firefox滚动条重置错误

要解释一下的话...你必须遵循这一系列事件:

  1. 获取元素与overflow:auto和一些溢出的内容,然后滚动了一点;
  2. 隐藏元素(display: none);
  3. 删除内容
  4. 显示元素(它是空的现在)
  5. 重新添加相同的内容(它现在滚动,就像它以前)
  6. 重置scrollTop的/ scrollLeft通过Javascript为0。

因此,内容会滚动到合适的位置,但滚动条会保持原样,这显然是错误的。

有没有任何解决方法,这个短的删除/重新添加元素,而不是只是隐藏它?

回答

3

在测试中,我发现如果将scrollTop设置为除0(或其当前值)以外的任何值,则会正确更新滚动条。然后,您可以立即将scrollTop设置为0.

特别是当您有测试用例时,您当然应该在Bugzilla中提供一个错误。

+0

哦,太好了!我无法在Firefox的网站上找到它。我使用了“帮助”菜单中的“提交反馈”选项。我也会提交一个bug。 –

+0

有! https://bugzilla.mozilla.org/show_bug.cgi?id=804844 –

+0

哇,有人已经追踪了这个bug并发现它在2006年4月开始发生了!我只希望你不必再等6年才能修好...... – Neil

0

解决办法是添加动画的方法,所以使用:

function resetScroll(){ 
    $(document).scrollTop(1); // removes the impression of animation 
    $('html,body').animate({scrollTop:0},'fast','linear'); 
}