1

我在 Firefox 浏览器中遇到了问题。这可能是一个错误,但也许有人知道解决方法。该问题在以下 JSFiddle 中进行了演示:http: //jsfiddle.net/F5tdB/这已在 Firefox 12.0、15.0.1、16.0.1 上进行了测试。

用文字来解释......你必须遵循以下事件序列:

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

结果,内容确实滚动到了正确的位置,但滚动条保持原样,这显然是错误的。

是否有任何解决方法来删除/重新添加元素而不是仅仅隐藏它?

4

2 回答 2

3

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

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

于 2012-10-23T23:45:33.830 回答
0

解决方案是添加 animate 方法,因此使用:

function resetScroll(){
    $(document).scrollTop(1); // removes the impression of animation
    $('html,body').animate({scrollTop:0},'fast','linear');
}
于 2015-01-13T15:07:41.670 回答