我使用Bootstrap 3,Sammy.js和Knockout 3构建了一个小型单页Web应用程序。我发现当页面向下滚动时,我无法获取{当我也更改window.scrollTo(0, 0)
时,{1}}可以在Mobile Safari上工作 - 特别是在iPhone 5C上的iOS 7上(可能会在其他iPhone型号上发生)。
当我尝试这样的事情时:
location.hash
页面将几乎一直滚动到顶部 - 它通常会滚动到Y = 12或13.如果我在调用self.changeState = function() {
self.state(State.NewState);
location.hash = 'somevalue';
window.scrollTo(0, 0);
};
时它将永远不会滚动到0用户滚动到页面的底部(内容足够高,以保证滚动到顶部)。
我尝试了各种StackOverflow答案/建议(例如The same old issue, .scrollTop(0) not working in Chrome & Safari);通常的补救措施(包裹在window.scrollTo(0, 0);
中)不会改变行为 - 它仍会滚动到靠近页面顶部的某个位置,但不会到达顶部。
标题样式:
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);
};
我已经使用Safari Web Inspector挖掘了这一点,并且就页面结构而言似乎没有任何不妥之处。我只是不确定在这里寻找什么 - 任何想法?
修改
到目前为止,我还没有能够在我的应用程序代码之外重现这一点。我试图在JSFiddle中打破这个 - 在这一个中,它正常工作(例如,它应该滚动到0,0):http://jsfiddle.net/rringham/n9evU/24/show。
答案 0 :(得分:0)
在我的情况下,同样的问题,但它来自我在iframe中的事实。 所以做window.top.scrollTo(0,0)就成了!!!!
答案 1 :(得分:0)
我设法通过在元素上使用height: 100vh
或min-height: 100vh
来重新创建此问题。我改变了我的CSS以使用100%
代替(这有点痛苦)并且问题消失了。
答案 2 :(得分:0)
尝试设置scrollTo(-n,0); “ n”是小于0的任何数字