上方向にスクロールする際のスクロールジャーク

Scroll to the bottom of a long thread and refresh the page.

Grab the scroll bar and scroll up to the top of the page. You’ll see a loading spinner while the previous posts load. (You can make this problem more obvious using a network conditioning tool, e.g. Chrome Dev Tools Network tab, Slow 3G.)

Actual: As the posts load, the scroll jumps around.

In the linked video, you can see that RBoy’s post #76 “Maybe codinghorror can confirm” is at the top of the screen; then, when the subsequent page finished loading, the scroll jumps up to lid’s post #9 “It will be interesting to see if…”

Expected: The previous page should appear without disturbing the scroll position; whatever I saw on the screen as the previous page loads should still be on the screen when it’s drawn in.

Onebox seems not to be working with my Google Drive link. Let’s see if this works: https://drive.google.com/open?id=1ny2zYNegggQ3uPlhG9t-tEB3xkUSepcE

That just looks like posts are loading as you scroll up. It’s worse when you limit network speeds because the data takes longer to traverse a slower network.

Try scrolling using the handle on the timeline scroller. It won’t jump around because more posts aren’t being loaded ahead and causing the position of the scrollbar to be recalculated. It’s a big part of why it’s there to begin with.

I agree that this is happening because the posts are loading. With a slow network, I can reproduce this just scrolling with trackpad/mouse wheel. (Would it help to post a demo video of that?)

This problem is occurring only when scrolling up because when scrolling down, Discourse draws in a bunch of grey filler; when the posts become available, they pop in right where they’re supposed to be and the scroll doesn’t jank.

It happens because pages are rendered from top to bottom, Discourse doesn’t know the height of posts before they arrive. I can see the scrollbar hopping around as you drag up, using the scroller at least mitigates against the problem by scrolling to the absolute top of each reply.

「いいね!」 2

I think all that’s needed is grey filler at the top, just like scrolling down.

@eviltrout spent a fair amount of time optimizing up scroll, it was quite a few years ago so maybe we are due to have one more look

「いいね!」 3

For the record, this is a very difficult problem. And scrolling down is fundamentally different because you’re not stacking things on top of the viewport. A variable height post causes no problems when added to the bottom, but consider what it does when stacked on top.

「いいね!」 5

最近、コミュニティでスクロールアップ時に画面が跳ねたり、不具合が発生する現象が報告されています。

これは純粋にソフトウェアの問題でしょうか?スクロールアップ時のユーザー体験を最適化するために、他にできることはありますか?

広告なしでも発生しますか?

はい、その通りです。モデレーターとして広告が表示されることはなく、上にスクロールする動作がまだ不具合を起こしています。

ユーザーが急激に上にスクロールした場合、ソフトウェアが「巻き戻り」しないようにするのは合理的でしょうか?上記で説明した通り、この問題はユーザーが速くスクロールしすぎたことで投稿が適切にレンダリングされないことが原因だと推測されます。以前の投稿の読み込み完了後に画面が巻き戻るよりも、画面が一時停止する方が、ユーザーを混乱させないため望ましいです。

セーフモードではどうなるのか気になりますね? Using Safe Mode to troubleshoot issues with themes and plugins

「いいね!」 1

セーフモードでも同様の現象は発生しますか、@littleviolette さん?

「いいね!」 1

直ちに通常のモードとセーフモードの両方で問題を再現しようと試みましたが、再現できませんでした。Discourse は2日前に更新しましたが、それが動作に変更をもたらしたかは不明です。コミュニティにさらにフィードバックを仰ぎます。フォローアップいただきありがとうございます!

「いいね!」 4

当サイトでもこれに関する多数の報告を受けています。今すぐ試してみましたが、セーフモードでも依然として発生していることが確認できました。最近の報告例:

「いいね!」 2
「いいね!」 1

不自然な設定(画像のサイズを取得しない)が原因で、画像のリサイズ時にスクロールが跳ねる問題が発生するバグを修正しました。この設定は「自滅的な設定」であったため、削除しました。ご自身の環境でこの設定が有効になっていなかったかご確認ください。

もう一つの可能性として、広告が原因である場合もあります。

要するに、ビューポートが動的にリサイズされる要因は何であれ、大きな問題を引き起こします。