6

式を使用する場合

document_height - window_height = max_scroll_position

一貫して0と評価されるはずですが、1または0と評価されます。たとえば、Firefox Openコンソールで、 http://stackoverflow.comのページの一番下までスクロールし、コンソールで次の手順を実行します。

($(document).height() - $(window).height()) - $(document).scrollTop()

私は答えとして1を取得します(スクロール位置を一番下に保つことを忘れないでください)ただし、jquery.comでは、上記を実行すると0になります

私は何が欠けていますか?

4

1 に答える 1

2

いくつかのテストの後、余分な 1 ピクセルは間違いなく丸め誤差です。これら 3 つの変数 (ドキュメントの高さ、ウィンドウの高さ、およびスクロール トップ) はすべて、より高い内部精度またはズームされていないブラウザー ウィンドウのスケールに維持され、JavaScript プロパティの要件に合わせて必要に応じてスケーリングおよび丸められます。ズーム比が増加するにつれて発生する可能性が高くなるいくつかのエッジケースでは、これらの値が丸められて、見たような一貫性のない結果が生成されます。

他の変数の値に基づいてこれらの変数の 1 つ以上を何度も迅速に調整しない限り、この丸め誤差がユーザーに見える問題を引き起こす可能性はほとんどありません。それらを頻繁に調整する必要がある場合は、おそらく調整された数値をキャッシュし、ブラウザーから報告された数値の代わりにキャッシュされたバージョンを使用して、さらに計算する必要があります。

[注: 最終的に、Firefox で 250% のズームで、OP の式を使用して -1 の丸め誤差を得ることができました。]

于 2012-07-31T00:00:03.803 に答える