【问题标题】:Mobile Safari: why is window.scrollTo(0, 0) not scrolling to (0, 0)?移动 Safari:为什么 window.scrollTo(0, 0) 不滚动到 (0, 0)?
【发布时间】:2014-07-07 17:25:11
【问题描述】:

我使用 Bootstrap 3、Sammy.js 和 Knockout 3 构建了一个小型单页 Web 应用程序。我发现当页面向下滚动时,我无法让 window.scrollTo(0, 0) 在移动设备上工作Safari,当我也更改 location.hash - 特别是在 iPhone 5C 上的 iOS 7 上(虽然可能发生在其他 iPhone 型号上)。

当我尝试这样的事情时:

self.changeState = function() {
    self.state(State.NewState);
    location.hash = 'somevalue';
    window.scrollTo(0, 0);
};

页面将几乎一直滚动到顶部 - 它通常会滚动到 Y = 12 或 13。如果我在用户处于滚动到页面底部(并且内容足够高,需要滚动到顶部)。

我尝试了各种 StackOverflow 答案/建议(例如 The same old issue, .scrollTop(0) not working in Chrome & Safari);通常的补救措施(包装在 setTimeout 中)不会改变行为 - 它仍然滚动到页面顶部附近的某个位置,但不是完全到顶部。

页眉样式:

<div class="navbar navbar-default navbar-inverse navbar-static-top">

视口设置:

<meta name="viewport" 
      content="width=device-width, 
               height=device-height, 
               initial-scale=1.0, 
               maximum-scale=1.0, 
               target-densityDpi=device-dpi" />

滚动尝试:

self.changeState = function() {
    self.state(State.NewState);
    location.hash = 'somevalue';
    window.scrollTo(0, 0);
};

和:

self.changeState = function() {
    self.state(State.NewState);
    location.hash = 'somevalue';
    window.setTimeout(function() {
        window.scrollTo(0, 0);
    }, 0);
};

我使用 Safari Web Inspector 对此进行了深入研究,就页面结构而言,似乎没有什么不合适的地方。我只是不确定要在这里寻找什么 - 有什么想法吗?

编辑:

到目前为止,我无法在我的应用程序代码之外重现这一点。我试图让它在 JSFiddle 中中断 - 在这个中,它可以正常工作(例如,它应该滚动到 0,0):http://jsfiddle.net/rringham/n9evU/24/show

【问题讨论】:

    标签: javascript knockout.js twitter-bootstrap-3 mobile-safari sammy.js


    【解决方案1】:

    我设法通过在元素上使用height: 100vhmin-height: 100vh 来重现此问题。我将我的 CSS 改为使用 100%(这有点痛苦),问题就消失了。

    【讨论】:

      【解决方案2】:

      尝试设置 scrollTo(-n, 0); "n" 是任何小于 0 的数

      【讨论】:

        【解决方案3】:

        在我的情况下,同样的问题,但它来自我在 iframe 中的事实。 所以做 window.top.scrollTo(0,0) 成功了!!!

        【讨论】:

          猜你喜欢
          • 2019-07-16
          • 2011-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          • 2014-01-05
          相关资源
          最近更新 更多