iOS: トピック一覧で「戻る」が誤った位置に移動する

Safari/iOS(iPhone 8、最新バージョン)の「戻る」機能は不安定です。トピック一覧からトピックへ移動した後、一覧の正しい位置に戻らないことがよくあります。自分のフォーラムではほぼ常に発生し、Metaでは時折機能しますが、より頻繁に機能しません。これは「戻る」ボタンをクリックした場合も、右にスワイプした場合も同様です。

「いいね!」 4

気になったのですが、セーフモードでも動作しますか?

「いいね!」 3

申し訳ありません、その点を付け加えるのを忘れていました。自分自身のフォーラムとメタの両方でセーフモードをテストしましたが、結果は同じでした。

「いいね!」 1

iOS のハブアプリですか、それともネイティブのモバイル Safari ですか?メタのトピックリストから「戻る」ボタンや「戻る」スワイプを使って、私は問題の再現ができませんでした。

具体的な再現手順はありますか?

あ、待ってください。「戻る」スワイプは再現できますが、「戻る」ボタンは再現できません。「戻る」スワイプはトピックリストの実際のスクロール位置を記憶していないようですが、「戻る」ボタンは常に記憶しています。

「いいね!」 4

ネイティブのモバイル Safari で発生しています。最初はトピックリストの更新に関連しているかと疑いましたが、そうではないようです。Meta では 100% の確率で発生します。

再現手順:

  • Meta にログイン
  • Meta のホームページをリロード(このステップは不要なようですが、トピックリストの更新問題を除外したかったため)
  • 1 ページ下へスクロール
  • トピックを選択
  • 右にスワイプするか、戻るボタンをクリック

以下の試行もすべて同様の結果となりました:

  • コンテンツブロックで Crystal 広告ブロッカーを無効化
  • ログインせずにプライベートタブで Meta を開く
  • iPhone SE でテスト
  • Galaxy S6 の Chrome でテスト
「いいね!」 5

確かに私も再現しました @eviltrout .. ここに回帰があったのでしょうか? @j.jaffeux?

「いいね!」 6

これで修正されるはずです:

詳細はコミットメッセージをご覧ください。来週のマージ前にロビンの承認を待つ予定です。詳細なご報告ありがとうございます :+1:

「いいね!」 11

マージされました。進捗をご報告ください。

「いいね!」 6

このトピックは、最後の返信から3日後に自動的に閉鎖されました。新しい返信は許可されていません。

@bartv との議論の後、さらに調査したところ、確かに回帰が発生していることが分かりました。

原因はおそらく以下のコミットにあると思います:

このケースでは、scrollOnLoad が undefined になっています:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/components/topic-list.js.es6#L71

以下の修正を提案します:

来週、@markvanlan さんにごレビューいただけますでしょうか?

「いいね!」 10

@bartv 2 番目の修正をマージしました。お時間のある際、結果をご報告ください。

余談ですが、このロジックをさらに改善できないか考えています。現在、ページをスクロールするたびにトピックの 1 つの位置を保存していますが、特にモバイル端末では、クリックしたトピックが戻ってきた際にビューポート内に表示されない場合があります(ごく近い場所にある場合でも)。

「いいね!」 5

ここで Meta でテストしてみましたが、私の環境では動作しません。トピックから「戻る」をタップすると、トピック一覧の一番上に戻ってしまいます。

トピック一覧の正確な位置に戻る機能にも賛成です。

私の環境では動作します。お時間のある時に動画を作成してください。

「いいね!」 2

投稿に追加しました。参考になれば幸いです。他に含める必要があるものがあれば、お知らせください。

「いいね!」 1

動画が示しているのは予想通りです。「ページスクロール」、つまりさらにトピックが読み込まれなかったため、最後に閲覧したトピックの位置が更新されませんでした。

これは、私のサイドノートで改善を提案した点です。

「いいね!」 3

ああ、確かに、新しいトピックが読み込まれるまで十分にスクロールすれば動作することを確認しました。その制限は予想外でした。ユーザーとしては、少し混乱を招くか、一貫性がないと感じます。

「いいね!」 1

はい、僕もそれほど好きではありません。だから改善を提案したんです。ですが、私が修正した他の問題とは異なり、これは後退ではないと認識しています。

「いいね!」 4

ああ、確かにこのコミットから別の回帰が発生していました。これで解決すると思います:

そして、私たちが話していた動作を取り戻せます!

「いいね!」 6