Rob*_*Rob 5 javascript mobile-safari sammy.js knockout.js twitter-bootstrap-3
我已经使用 Bootstrap 3、Sammy.js 和 Knockout 3 构建了一个小型单页 Web 应用程序。我发现当页面向下滚动时,window.scrollTo(0, 0)
当我也更改时,我无法在 Mobile Safari 上工作location.hash
-特别是在 iPhone 5C 上的 iOS 7 上(尽管可能会发生在其他 iPhone 型号上)。
当我尝试这样的事情时:
self.changeState = function() {
self.state(State.NewState);
location.hash = 'somevalue';
window.scrollTo(0, 0);
};
Run Code Online (Sandbox Code Playgroud)
页面将几乎一直滚动到顶部 - 它通常会滚动到 Y = 12 或 13。如果我window.scrollTo(0, 0);
在用户滚动到页面底部时调用它,它永远不会滚动到 0 (并且内容足够高以保证滚动到顶部)。
我已经尝试了各种 StackOverflow 答案/建议(例如,同样的老问题,.scrollTop(0) 在 Chrome 和 Safari 中不起作用);通常的补救措施(包裹在 a 中setTimeout
)不会改变行为 - 它仍然滚动到页面顶部附近的某个地方,但不是完全到顶部。
标题样式:
<div class="navbar navbar-default navbar-inverse navbar-static-top">
Run Code Online (Sandbox Code Playgroud)
视口设置:
<meta name="viewport"
content="width=device-width,
height=device-height,
initial-scale=1.0,
maximum-scale=1.0,
target-densityDpi=device-dpi" />
Run Code Online (Sandbox Code Playgroud)
滚动尝试:
self.changeState = function() {
self.state(State.NewState);
location.hash = 'somevalue';
window.scrollTo(0, 0);
};
Run Code Online (Sandbox Code Playgroud)
和:
self.changeState = function() {
self.state(State.NewState);
location.hash = 'somevalue';
window.setTimeout(function() {
window.scrollTo(0, 0);
}, 0);
};
Run Code Online (Sandbox Code Playgroud)
我已经使用 Safari Web Inspector 对此进行了深入研究,就页面结构而言,似乎没有任何不合适的地方。我只是不确定要在这里寻找什么 - 有什么想法吗?
编辑:
到目前为止,我还没有能够在我的应用程序代码之外重现这一点。我试图让它在 JSFiddle 中中断 - 在这个中,它工作正常(例如,它应该滚动到 0,0):http : //jsfiddle.net/rringham/n9evU/24/show。
归档时间: |
|
查看次数: |
6366 次 |
最近记录: |