Safari (iOS)でDiscourseインスタンスがベータ8以降、IntersectionObserverを手動で無効にしたため空白ページを表示する

最新のビルド(2.7.0.beta8 f002c58a30)では、iOS の Safari を使用したモバイルデバイスで空白のウェブページが表示されます。

Meta インスタンスでも再現可能です。

以前の実行中のビルドでは問題ありません。

編集:解決策はこちら :grinning_face:

私のインスタンスでも、メタでも再現できません。

奇妙です

再起動やキャッシュのクリアなどを試しました。

iOS 14.4 - iPhone 12 Pro。
同じバージョンで、iPhone 11 でも同じ問題が発生しています。

ここでさらにフィードバックが得られることを願っています。

Xsで14.5.1では再現していません。

コンテンツブロッカーは有効になっていますか?

確認しましたが、すべてオフになっています。

最新の iOS に更新しましたが、同じ問題が発生しています。

引き続き調査します。

再現せず(以下で確認済み):
iPhone 6s iOS 13.7
iPhone 7 Plus iOS 14.4.2
iPhone SE iOS 14.4.2

複数のデバイスで同じ問題が発生している場合、ネットワーク経路に問題がある可能性があります。

Wi-Fi とモバイル回線の両方で発生しますか?

JavaScriptを無効にすると、Metaの非常にシンプルなバージョンが表示されます。再度有効にすると、ページが再読み込みされ、空白のままになります。

VPN、モバイルデータ、Wi-Fiを試しました。

iPhone 11 Pro(iOS 14.4)
iPhone 12 Pro(iOS 14.5.1)

ChromeやBraveブラウザでは問題ありません。

誰かこの現象を再現できることを切に願っています。

現在、1つのボードが最新のbeta8で動作しており、Metaを含むすべての機能が機能していません。
2つのボードはbeta7で動作しており、問題なく動作しています。

1つのボードをbeta7からbeta8に更新して、同様に動作しなくなるか確認してみます。

メタをセーフモードで試してみられますか?動作しますか?

https://meta.discourse.org/safe-mode

セーフモードページは機能していますが、セーフモード時には同じ空白ページが表示されます。

Safari で任意のページをリフレッシュすると、以下のログが出力されました。

ReferenceError: Can't find variable: IntersectionObserver
Url: https://domain.com/assets/ember_jquery-36a23101c869ab0dc53fc908de69adb785731593573d32bdeef416acc1076ef4.js
Line: 26
Column: 28177
Window Location: https://domain.com/login

Hmm @blake / @pmusaraj、これは iOS 14 では問題なかったと思っていましたが、この IE ポリフィルの削除を元に戻すべきでしょうか。どうやら iOS 側でも時々必要としているようです。

Caniuse によると、IntersectionObserver API は 2019 年 3 月に iOS 12.2 で追加されました。

もしこれらが iOS でもテストされたのであれば、動作するはずだという証拠にもなります。iOS 上のすべてのブラウザは、裏側で WebKit を使用しています。

@MarcP さん、もしかして 設定 > Safari > 詳細 > 実験的機能 で IntersectionObserver を無効にしていませんか?デフォルトでは有効になっているはずです(Safari Technology Preview リリース 71 のリリースノートを参照)。

ああ、当たりました!これらの修正を試している最中に、あるフォーラムで「Safari ページが白表示で動作が遅くなる場合は、すべての実験的機能を無効にしてください」という提案を見かけました。さて、問題は解決しました。

迅速な対応をしてくださったこのコミュニティに改めて感謝します。

ちょうどこの問題を抱えているフォーラムメンバーがいました。彼らは以前に実験的機能を無効にしていましたが、いつ、どのように無効にしたのかは覚えていませんでした。しかし、この話題のおかげで再び動くようになったので、ありがとうございます!