Невозможно загрузить изображения в Safari

Примерно месяц назад я перестал загружать графику на Discourse. Под полем ввода отображается обычная информация о прогрессе: 20%, 40%, 100% загружено. Но после завершения загрузки в поле ввода появляется что-то вроде этого (я ввёл это как предварительно отформатированный текст, чтобы всё отобразилось корректно):

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

А в панели с сообщением о завершении для того же файла отображается:

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

Однако на этом этапе загрузка фактически не происходит. Очевидно, что содержимое, которое должно находиться в скобках, не загружается. Ожидание в течение нескольких часов ничего не меняет.

Проблема возникает на Mac с macOS v10.15.7 и Safari версии 15.5 (15613.2.7.1.9, 15613). При доступе к Discourse с того же компьютера через Firefox всё работает нормально.

1 лайк

Появляется ли что-либо в консоли DevTools браузера, когда это происходит?

1 лайк

В Safari включены какие-либо расширения? Можете ли вы временно отключить их?

Я новичок в этом. Пожалуйста, подскажите, куда смотреть. В моей версии Safari я вижу только заголовок меню Develop в верхней панели.

Нет. Это стандартная установка.

Да, это именно то! Думаю, это случайное видео на YouTube показывает, как открыть консоль: https://www.youtube.com/watch?v=kRRK3hZGw7I

2 лайка

Извините, но это видео было настолько плохо сделано, что я не смог его понять. Тем не менее, я, кажется, нашел «Консоль». Если я попробую загрузить изображение JPG с именем Joss-Main в сообщение, которое сейчас составляю в Safari, результат будет следующим:

Uploading: Joss-Main.jpg…

Войдя через Firefox и продолжив обсуждение той же темы, я могу загрузить скриншот окна Консоли Safari. Всё, что появилось в окне Консоли, возникло после перетаскивания этого одного изображения в область написания сообщения (в Safari). Как видите, изображение скриншота загружается в Firefox без проблем:

Что ещё я могу сделать, чтобы помочь разобраться в этой ситуации?

1 лайк

Поскольку вы используете очень свежий браузер, мы можем попытаться воспроизвести проблему здесь. Я передам задачу техническим специалистам, чтобы проверить, смогут ли другие воспроизвести ошибку в Safari 15.5. На данный момент я даже не могу протестировать это в BrowserStack, так как версия слишком новая (хотя и полностью поддерживаемая).

Можете ли вы загрузить проблемное изображение сюда, или проблема возникает с каждым изображением?

2 лайка

Это касается каждого изображения, которое я пробовал: PNG, JPG, PDF… Тип и размер файла не имеют значения.

2 лайка

У участников моего сообщества возникла та же проблема. Похоже, что Safari является основной причиной. Я постараюсь найти проблему для вас.

1 лайк

Удалось ли что-то, @Noah?

Мы пытались создать простое воспроизведение, но, к сожалению, пока не смогли его повторить. Была похожая тема, где проблема оказалась связана с расширением браузера 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

Компьютер nearing конца своего полезного срока службы, поэтому ограничение на macOS v10.15.7.

Кажется, @david, это связано с execCommand, см.: [BUG] Share > Copy link broken in Safari · Issue #1716 · opensearch-project/OpenSearch-Dashboards · GitHub

Мое предположение: в этой версии Safari есть какие-то баги. Тот факт, что этот API помечен как «устаревший» (deprecated), вызывает массу проблем, потому что браузеры имеют тенденцию немного ломать его?

Мы не используем execCommand при переходе от плейсхолдеров загрузки к URL-адресам, поэтому я не думаю, что это причина проблемы. (Мы не можем легко переключиться, потому что execCommand("insertText") требует, чтобы текстовое поле имело фокус, а загрузка может завершиться, когда фокус не на текстовом поле).

Загрузки по-прежнему используют метод set("value", ...), который мы применяем уже много лет

Технически он устарел согласно веб-стандартам, но пока нет альтернативы для команды insertText. Согласно MDN:

API буфера обмена можно использовать вместо execCommand во многих случаях, но execCommand всё ещё иногда полезен. В частности, API буфера обмена не заменяет команду insertText, которую можно использовать для программного замещения текста в месте курсора с сохранением буфера отмены (истории правок) в обычных элементах textarea и input.

Учитывая широкое распространение, крайне маловероятно, что браузеры откажутся от поддержки этого без предоставления альтернативы и периода предупреждения об устаревании.

4 лайка

@tut Я только что добавил дополнительную информацию для отладки здесь, на Meta, чтобы мы могли попытаться разобраться, что происходит. Пожалуйста, попробуйте следующее:

  1. Откройте Meta в Safari.
  2. Откройте консоль разработчика.
  3. Попробуйте загрузить файл.
  4. Кликните в консоли разработчика.
  5. Нажмите Cmd + a, чтобы выделить все логи.
  6. Нажмите правой кнопкой мыши → Сохранить выделенное.
  7. Сохраните текстовый файл где-нибудь, а затем загрузите его сюда (предположительно, используя Firefox).
2 лайка

@david, вот моя попытка загрузить изображение JPEG под именем Joss-Main.jpg в Safari:

Загрузка: Joss-Main.jpg…

Как и ожидалось, загрузка не завершилась.


Теперь я переключился на Firefox и продолжил составление того же сообщения.

Console.txt (4.1 КБ)

1 лайк

Ого, это странно! Safari заменяет ... (три точки) на символ многоточия . Из-за этого позже не удаётся заменить плейсхолдер на настоящий URL.

@tut, откройте «Системные настройки» → «Клавиатура» → «Текст» и проверьте, нет ли там настроенной замены. Если я добавлю замену ..., то смогу воспроизвести ту же проблему в Safari на своей машине:

(у вас может выглядеть немного иначе из-за более старой версии macOS)

Да, это выглядит вполне вероятным — извините, что ранее отверг эту идею, @sam :sweat_smile:. Похоже, Safari применяет замены текста на уровне ОС к тексту, который мы добавляем через execCommand("insertText",. Интересно, это новое поведение в Safari 15.5 или так было всегда, и мы просто не замечали этого :thinking:

5 лайков

@david, у меня не настроена такая замена в настройках клавиатуры. Однако теперь, когда я знаю, что искать, я могу подтвердить, что замена происходит. Я даже могу увидеть это в процессе набора текста. И я могу это проверить, используя стрелку назад. Когда я дохожу до символа многоточия, курсор перепрыгивает обратно через все три точки, которые были введены как отдельные символы.

То же самое происходит в приложениях Заметки, Предпросмотр, Сообщения и Почта, но не в Календаре, Картах, Фотографиях и (очевидно) Firefox. Похоже, это особенность конкретного приложения, а не системная настройка.

2 лайка