Safariで画像をアップロードできません

約1ヶ月前から、Discourse でグラフィックをアップロードできなくなりました。コンposing pane の下に典型的な進捗情報が表示されます — 20%、40%、100% アップロード完了。しかし、それが完了すると、composing pane には次のようなものが表示されます(すべて表示されるように、このテキストは整形済みテキストとして入力しました):

[Uploading: Screen Shot 2022-06-14 at 10.58.16 AM.png…]()

そして、同じものの完成したメッセージ pane には次のように表示されます:

Uploading: Screen Shot 2022-06-14 at 10.58.16 AM.png…

しかし、その時点では、まだアップロードアクティビティは行われていません。明らかに、括弧内にあるはずの内容がアップロードされていません。数時間待っても何も変わりません。

これは macOS v10.15.7 と Safari Version 15.5 (15613.2.7.1.9, 15613) を実行している Mac で発生します。同じマシンで Firefox 経由で Discourse にアクセスすると、すべて正常に機能します。

「いいね!」 1

これが起こったときにブラウザの開発者ツールコンソールに何か表示されますか?

「いいね!」 1

Safariで拡張機能は有効になっていますか?一時的に無効にすることはできますか?

その点については初心者です。どこを見ればよいか教えていただけますでしょうか。私のバージョンのSafariでは、トップバーに「開発」メニュー項目しか表示されません。

いいえ。これは標準のインストールです。

はい、これです!YouTubeのこのランダムな動画で、コンソールにアクセスする方法を説明していると思いますか? https://www.youtube.com/watch?v=kRRK3hZGw7I

「いいね!」 2

申し訳ありませんが、そのビデオはひどく制作されていたため、理解できませんでした。それでも、「コンソール」を見つけたと思います。現在Safariで作成中のメッセージにJoss-Mainという名前のJPG画像をアップロードしようとすると、次のようになります。

Uploading: Joss-Main.jpg…

Firefox経由でログインし、同じトピックを続行すると、Safariコンソールウィンドウのスクリーンショットをアップロードできます。コンソールウィンドウのすべては、その1つの画像をコンposingペインにドラッグした後(Safariで)表示されました。ご覧のとおり、スクリーンショット画像はFirefoxで問題なくアップロードされます。

この問題を解決するために、他にどのようなことができますか?

「いいね!」 1

最新のブラウザをご利用とのことですので、こちらでも再現を試みます。Safari 15.5で再現できるか、テクニカルアドボケイトに内部的にアサインします。現時点では、ブラウザスタックでもテストできないほど最新です(ただし、100%サポートされています)。

問題の画像をここにアップロードしていただけますか、それともすべての画像で発生していますか?

「いいね!」 2

試した画像はすべてそうです。PNG、JPG、PDF…。ファイルの種類やサイズは関係ありません。

「いいね!」 2

コミュニティのメンバーも同じ問題を抱えています。Safariが主な問題のようです。問題を突き止めてみます。

「いいね!」 1

ノアさん、何か進展はありましたか?

簡単な再現手順を試しましたが、残念ながら今のところ再現できていません。以前、ClearURLブラウザ拡張機能が原因だった類似のトピックがありましたが、今回の件に役立つかは分かりません。MacOS Firefox image upload error - #16 by jimkleiber

「いいね!」 4

私の問題と@jimkleiberさんが報告した問題には、重要な違いがあります。

  • 彼の問題はFirefoxで発生していました。Firefoxは私には機能します。
  • 彼はブラウザ拡張機能が原因であることが最終的に特定されました。私にはありません。
  • 彼はエラーメッセージを見ました。私の場合は、Discourseは画像アップロードが成功したかのように動作します。
「いいね!」 2

@JammyDodger 返信が遅くなり申し訳ありません。友人のSafariでテストを行い、何かポップアップが出るか確認します。@tut ちなみに、お使いのデバイスは何ですか?

「いいね!」 1

Screen Shot 2022-07-13 at 3.15.04 PM

寿命が近づいているマシンなので、macOS v10.15.7 に制限されています。

@david さん、これは [BUG] Share > Copy link broken in Safari · Issue #1716 · opensearch-project/OpenSearch-Dashboards · GitHub に関する execCommand 関連のように見えます。

この Safari のバージョンにバグがあるのかもしれません。この API が「非推奨」とフラグ付けされていることが、ブラウザが少し壊してしまう原因で、あらゆる種類の問題を引き起こしているのではないでしょうか?

アップロードプレースホルダーからURLに変換する際には execCommand を使用しないため、それが原因だとは思いません。(execCommand("insertText") はテキストエリアにフォーカスが必要であり、フォーカスがない場合にアップロードが完了する可能性があるため、簡単に切り替えることはできません)。

アップロードでは、長年使用してきた set("value", ...) メソッドが引き続き使用されています。
https://github.com/discourse/discourse/blob/605aafec302c77636e35cca79edebfd073840c0a/app/assets/javascripts/discourse/app/mixins/textarea-text-manipulation.js#L145-L155

ウェブ標準からは技術的に非推奨ですが、insertText コマンドの代替手段はまだありません。MDNより:

多くの場合、Clipboard APIexecCommand の代わりに利用できますが、execCommand が依然として役立つ場合もあります。特に、Clipboard API は insertText コマンドを置き換えるものではありません。これは、プレーンな textarea および input 要素で、編集履歴(undo buffer)を保持しながら、カーソル位置のテキストをプログラムで置き換えるために使用できます。

広範な使用を考慮すると、ブラウザが代替手段や非推奨期間を提供せずにサポートを中止する可能性は非常に低いと思われます。

「いいね!」 4

@tut Metaにデバッグ情報を追加しましたので、何が起こっているのか解明を試みることができます。以下をお試しいただけますでしょうか。

  1. SafariでMetaを開く
  2. 開発者コンソールを開く
  3. ファイルをアップロードしてみる
  4. 開発者コンソール内をクリックする
  5. Cmd + a を押して、すべてのログを選択する
  6. 右クリック → 選択したものを保存
  7. テキストファイルをどこかに保存し、それをここにアップロードする(Firefoxを使用すると仮定します)
「いいね!」 2

@david、SafariでJoss-Main.jpgという名前のJPEG画像をアップロードしようとした結果は以下の通りです。

アップロード中: Joss-Main.jpg…

予想通り、アップロードは完了しませんでした。


Firefoxに切り替えて、同じメッセージの作成を再開しました。

Console.txt (4.1 KB)

「いいね!」 1

これは奇妙な問題ですね!Safariは「…」(3つのピリオド)を省略記号「…」に置き換えています。これにより、後でプレースホルダーを実際のURLに置き換える処理が失敗します。

@tut システム環境設定 → キーボード → テキストを開き、そこに置換が設定されていないか確認していただけますか?もし「…」から「…」への置換を追加すると、私のマシンでもSafariで同じ問題が再現できます。

(お使いのmacOSのバージョンが古い場合、見た目が若干異なる場合があります)

ええ、これは非常に可能性が高いですね。以前そのアイデアを却下してしまい、申し訳ありませんでした @sam :sweat_smile:。Safariが execCommand("insertText", を介して追加されたテキストにOSレベルのテキスト置換を適用しているようです。これはSafari 15.5の新機能なのか、それとも以前からそうだったのに気づかなかっただけなのか、疑問です :thinking:

「いいね!」 5

@david、キーボード環境設定でそのような置換は設定されていません。しかし、何を探せばよいかがわかったので、置換が発生することを確認できます。入力すると実際に発生しているのがわかります。また、バックスペースキーを使用して確認できます。省略記号の文字に到達すると、カーソルは個別の文字として入力された3つのピリオドすべてを飛び越えます。

メモ、プレビュー、メッセージ、メールでも同じことが起こりますが、カレンダー、マップ、写真、または(明らかに)Firefoxでは起こりません。したがって、これはシステムレベルのものではなく、アプリ固有の問題のようです。

「いいね!」 2