4

scrollTo(y,x) と scrollTop(x-pos) の両方を使用してみました。括弧内の値は、個々の DOM 要素の offset.top 値です。これらは最初はすべてのブラウザーで機能するように見えますが、Chrome を更新してフォームの送信を再送信すると、ページが本来あるべき場所に一瞬ジャンプしてから、トップに戻ります。これは、ページを更新する前にスクロールしてページの上部に戻ると発生します。Chrome はある種のセッション変数を保存するか、更新時にページの位置を追跡して、更新がクリックされたときにページが最後に表示された画面の部分にフォーカスするようにしますか? もしそうなら、Chrome からのそのような反応を防ぐ方法はありますか? Chrome がページの読み込みに反応するまで、scrolltop または scrollto (前述のとおり、両方を試しました) が待機することを期待して、setTimeout を追加しようとしましたが、結果は変わりません。

if ($('.register_box').length > 0) {
    if ($('.register_box').find('.error').length > 0) {
        var regbox = $('.register_box').offset();
        $('body').scrollTop(regbox.top);
    }
}

「body」、「html」、セレクター ラッパー、ウィンドウ、スクリーン、およびこれらの組み合わせを試しましたが、変化はありません。また、regbox.top の値を警告し、常に 699 の値を取得しているので、正しい値が渡されていることがわかります。伝播を停止するか、デフォルトを防止する必要がありますか? もしそうなら、どこで? Firefox と IE の両方が正しく応答します。Chrome は、Mac と PC の両方にありません。

4

1 に答える 1

1

$('html, body') を試してください。ここでjsfiddleを参照してください。

于 2012-08-02T04:27:18.937 に答える