レガシーブラウザでDiscourseが読み込まれない

community(dot)jenkins(dot)ioのユーザーです(すみません、リンクは2つしか投稿できません)。管理者によると、公式DiscourseグループがスポンサーとなっているDiscourseインスタンスを使用しているとのことです。ヘッダー/ソースのメタタグにはDiscourse 2.9.0.beta2と表示されています。

今週の月曜日から水曜日(2022-03-14/16)の間のいつか、古いAndroid Firefoxブラウザでサイトが読み込めなくなりました。具体的には、Firefox Android 68.11.0です。これは明らかに、Waterfox、FireStickのSilkブラウザなどの他のブラウザのコアでもあります。以前はここに来たことはありませんが、ここでも読み込めません。ページは数秒間データを取得するように見えますが、その後は空白になります。「デスクトップサイトをリクエスト」も空白です。「ソースを表示」は何も表示されない深淵にスピンオフします。

Jenkinsサイトでこれを報告しました。管理者は、「Firefox 68ではreplaceAllが利用できないため」である可能性が高いと示唆し、Saucelabsからの証拠を提供しました。約00:17秒のマークでエラーメッセージが表示されます。

今月初め、JavaScriptの変更によりStackOverflowの機能が壊れました(下のリンク)。これはStackOverflow/Exchangeサイトで2度目です。12月に一度壊れて修正しましたが、その変更を元に戻し、その機能を復元してくれることを心から願っています。

興味深いことに、FF 52.9.0 ESRを実行しているWINXP PCを起動したところ、「お使いのブラウザは古すぎるため、このサイトでは機能しません」というバナーにもかかわらず、サイトは正常に読み込まれたように見えました。したがって、これはかなり具体的/難解なようです。

Discourseチームに、どのような変更が行われたか、そしてこの破壊的な変更を軽減する方法があるかどうかをレビューしていただきたいと思います。特にテスト範囲外の場合、すべてを永遠にサポートできるわけではないことは認識していますが、報告された場合、そしてそれが運用に大きな影響を与えない明白な修正であれば、それを検討してください。すべての機能は求めていません。少なくともコア機能(少なくともコンテンツを読むこと)を求めています。

StackExchangeリンク:meta(dot)stackexchange(dot)com/q/376694

「いいね!」 10

古いサポートされていないブラウザでは、少なくとも読み取り専用ビューを表示したいと考えています。レンダリングが壊れて白いページしか表示されないのはバグです。

このリグレッションについては、来週確認します。

「いいね!」 8

replaceAlliOS 13.3 以下ではサポートされていません

このPRでは、この機能の検出を追加し、必要に応じて基本的なHTMLビューにフォールバックします。

「いいね!」 12

既存のトピックに3件の投稿がマージされました: Frontend on Prod Site Down – Ember/Test error

ご報告ありがとうございます @Ian_W :+1:

問題は修正されました。このトピックは1日後にクローズされます。

「いいね!」 4

Android のレガシー Firefox では部分的な成功しか報告できません。

meta.discourse.orgcommunity.jenkins.io の両方で、FF 52.9.0 ESR を実行している WINXP PC と同様に、「ブラウザが古すぎます」というバナーが表示されるようになりました。

しかし、トピックは表示されず、ロゴとフッターの [Home .. Privacy Policy] のみです。

Jenkins サイトでは、カテゴリ、カテゴリの説明、「トピック」数が表示されますが、いずれかのカテゴリをクリックしても、問題は表示されません。

「いいね!」 4

「いいね!」 1

Firefox 40でmeta.discourse.orgの古いHTMLバージョンをレンダリングさせました。

これは、Firefox 77未満のすべてのバージョンで発生するはずです。

「いいね!」 3

指摘したように、私のスクリーンショットはAndroid版のものです。デスクトップ版では問題なく動作するようです。

FF Androidブラウザから、デバッグに役立つ追加情報をどのように抽出できるのか分かりません。

「いいね!」 3

非推奨の fennec Firefox 68.9 を携帯電話にインストールしたところ、現在動作しているようです。

バグの再現を試みている際に、他に何が足りないか何かアイデアはありますか?

「いいね!」 3

さて、何と言えばいいのか分かりません。工場出荷時リセットされたAndroidフォン(古いフォンなので7.0で実行)、Firefox Android 68.11 APKをダウンロードし、インストールしてmeta(.)discourse(.)orgにアクセスしたところ、前のスクリーンショットが表示されました。

その後、奇妙なことが起こります。meta(.)discourse(.)org/t/にアクセスすると、「おっと!そのページは存在しないか、プライベートです。」と表示されます。

しかし、「人気」と「最近」のトピックのリストが表示され、このトピック自体も見ることができます。
トピックをクリックすると、トピックのタイトルと「bug」、「pri-high」が表示されますが、コンテンツは表示されません。

**: 2リンク限定投稿
(UIからスクリーンショットをアップロードできないようですので、返信で1つずつアップロードしました)

「いいね!」 1

「いいね!」 1

iPhone 6でDiscourseを使用する解決策を誰かが思いつくかもしれないので、新しい電話を購入する前に、念のため見ています。

「いいね!」 1

私も同じ問題が発生しています。以下に説明します。

「いいね!」 1

iOS 13未満またはAndroidの非推奨のFirefox Fennecの場合、HTMLビューが表示されるはずです。

しかし、以下の理由により、HTMLビューが存在しないため、それができていません。

これは私たちのコードベースにずっと前から存在しています。

クローラーコンテンツを含めてHTMLビューにフォールバックできるようにすることはコストがかかるため、古いSafariを以下に追加することを検討するかもしれません。

必要に応じてのみ実行されるようにするためです。

もう一つの代替案は、BabelにreplaceAllをトランスパイルさせるか、十分なポリフィルを見つけることです。

CC @sam @david @gerhard

「いいね!」 5

他に考えられる選択肢は以下の通りです。

  1. browser_update_user_agentsを完全に削除し、IE6準拠のXHRリクエストを使用して、これらのブラウザでレンダリングするためのコンテンツを取得します。(モバイルではすでにJavaScriptが無効になっています)
  2. replaceAllのポリフィルを作成する
  3. クローラーコンテンツを(モバイルでも)無条件に含める
  4. (1)と同じですが、設定をマイクロ最適化として残し、XHRにフォールバックします。

私は(1)と(3)、(4)の間で揺れています。

「いいね!」 7

3は最終的に実行しなければならないことだと思います。なぜなら、メーカーが破棄するモバイルデバイスの数は時間とともに増加する一方だからです。テンプレートを埋めるためのサーバー負荷が増加し、モバイルでのHTMLサイズが大きくなりますが、私の意見では実行すべきです。

したがって、3を実行し、1と2を実行可能かどうかを調査すべきだと思います。

「いいね!」 5

物事を逆転させることは可能でしょうか。特定のブラウザでのみモバイル最適化を有効にし、モバイルトラフィックの95%でこの最適化を維持しつつ、非常に安全に保つことはできますか?

「いいね!」 3