Javascript Mobile Safari:为什么window.scrollTo(0,0)没有滚动到(0,0)?
我已经用Bootstrap3、Sammy.js和Knockout 3构建了一个小的单页web应用程序。我发现,当页面向下滚动时,我无法打开Javascript Mobile Safari:为什么window.scrollTo(0,0)没有滚动到(0,0)?,javascript,knockout.js,twitter-bootstrap-3,mobile-safari,sammy.js,Javascript,Knockout.js,Twitter Bootstrap 3,Mobile Safari,Sammy.js,我已经用Bootstrap3、Sammy.js和Knockout 3构建了一个小的单页web应用程序。我发现,当页面向下滚动时,我无法打开窗口。当我同时更改位置时,滚动到(0,0)以使用Mobile Safari。散列——特别是在iPhone 5C上的iOS 7上(可能发生在其他iPhone型号上) 当我尝试这样的事情时: self.changeState = function() { self.state(State.NewState); location.hash = 'so
窗口。当我同时更改位置时,滚动到(0,0)
以使用Mobile Safari。散列
——特别是在iPhone 5C上的iOS 7上(可能发生在其他iPhone型号上)
当我尝试这样的事情时:
self.changeState = function() {
self.state(State.NewState);
location.hash = 'somevalue';
window.scrollTo(0, 0);
};
页面将几乎一直滚动到顶部-通常滚动到Y=12或13。如果我调用窗口,它将永远不会滚动到0。滚动到(0,0)代码>当用户滚动到页面底部时(并且内容足够高,可以滚动到顶部)
我尝试过各种答案/建议(例如);通常的补救措施(用setTimeout
包装)不会改变行为-它仍然会滚动到页面顶部附近的某个位置,但不会完全滚动到顶部
标题样式:
<div class="navbar navbar-default navbar-inverse navbar-static-top">
以及:
我与Safari Web Inspector一起深入研究了这一点,就页面结构而言,似乎没有什么不合适的地方。我只是不知道在这里找什么-有什么想法吗
编辑:
到目前为止,我还不能在我的应用程序代码之外复制这个。我试图让它在JSFIDLE中得到突破——在这一个中,它工作正常(例如,它会滚动到0,0,正如它应该的那样):在我的例子中,同样的问题,但它来自于我在iframe中的事实。
这么做window.top.scrollTo(0,0)成功了 我通过在元素上使用height:100vh
或minheight:100vh
重新创建了这个问题。我将CSS改为使用100%
(这有点麻烦),问题消失了。尝试将scrollTo设置为(-n,0);“n”是小于0的任何数字
<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);
};