这是一个令人沮丧的问题。我在jQuery加载块的脚本中使用以下内容:
window.scrollBy(0,-100);
我这样做是因为我通过滚动设置了一个固定在页面顶部的div,这条线将进行补偿,以便看到你点击的锚点(http://page.html#foo)它应该在哪里。
它在Firefox中运行良好。在Chrome和Safari中,它没有,因为加载事件似乎发生在浏览器滚动到锚点之前。
有什么建议吗?
答案 0 :(得分:1)
我遇到了同样的问题,这是我的工作。 (实际上是一个黑客)
// Clicking on the navigation bar
$('.navbar-nav a').click(function(e) {
// Blocking default clicking event
e.preventDefault();
// Scroll to the anchored element with a delay
setTimeout(function() {$('#talks')[0].scrollIntoView();}, 5);
// Compensate the scrolling with another delay
setTimeout(function() {scrollBy(0, -$('#info').height())}, 10);
}
好像这是Safari的错误。
答案 1 :(得分:0)
我也遇到过这个问题。使用超时,甚至0毫秒,似乎没有可见的跳跃。试试这个:
window.setTimeout()
{
window.scrollBy(0, -100);
}, 0);