3

ここでイライラする問題があります。jQueryロードブロック内のスクリプトで次を使用します。

window.scrollBy(0,-100);

これは、スクロールによってページの上部に固定されるように div を設定したためです。この行は、クリックしたアンカー (http://page.html#foo) が本来あるべき場所に表示されるように補正します。なれ。

Firefoxでうまく機能します。Chrome と Safari では、ブラウザーがアンカーにスクロールする前に load イベントが発生するように見えるため、そうではありません。

助言がありますか?

4

2 に答える 2

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のバグのようです。

于 2013-08-09T15:44:51.023 に答える
0

私もこの問題に遭遇しました。0 ミリ秒でもタイムアウトを使用すると、目に見えるジャンプなしで機能するようです。これを試して:

window.setTimeout()
{
    window.scrollBy(0, -100);
}, 0);
于 2017-11-05T13:41:35.913 に答える