Примерно месяц назад я перестал загружать графику на 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 всё работает нормально.
Извините, но это видео было настолько плохо сделано, что я не смог его понять. Тем не менее, я, кажется, нашел «Консоль». Если я попробую загрузить изображение JPG с именем Joss-Main в сообщение, которое сейчас составляю в Safari, результат будет следующим:
Войдя через Firefox и продолжив обсуждение той же темы, я могу загрузить скриншот окна Консоли Safari. Всё, что появилось в окне Консоли, возникло после перетаскивания этого одного изображения в область написания сообщения (в Safari). Как видите, изображение скриншота загружается в Firefox без проблем:
Поскольку вы используете очень свежий браузер, мы можем попытаться воспроизвести проблему здесь. Я передам задачу техническим специалистам, чтобы проверить, смогут ли другие воспроизвести ошибку в Safari 15.5. На данный момент я даже не могу протестировать это в BrowserStack, так как версия слишком новая (хотя и полностью поддерживаемая).
Можете ли вы загрузить проблемное изображение сюда, или проблема возникает с каждым изображением?
Мы пытались создать простое воспроизведение, но, к сожалению, пока не смогли его повторить. Была похожая тема, где проблема оказалась связана с расширением браузера ClearURL, но не уверен, что это поможет в данном случае? MacOS Firefox image upload error - #16 by jimkleiber
Привет, @JammyDodger, извините за медленный ответ. Я собираюсь провести тест на версии Safari у моих друзей, чтобы посмотреть, появится ли что-то. @tut, из любопытства, какое устройство вы используете?
Мое предположение: в этой версии Safari есть какие-то баги. Тот факт, что этот API помечен как «устаревший» (deprecated), вызывает массу проблем, потому что браузеры имеют тенденцию немного ломать его?
Мы не используем execCommand при переходе от плейсхолдеров загрузки к URL-адресам, поэтому я не думаю, что это причина проблемы. (Мы не можем легко переключиться, потому что execCommand("insertText") требует, чтобы текстовое поле имело фокус, а загрузка может завершиться, когда фокус не на текстовом поле).
Технически он устарел согласно веб-стандартам, но пока нет альтернативы для команды insertText. Согласно MDN:
API буфера обмена можно использовать вместо execCommand во многих случаях, но execCommand всё ещё иногда полезен. В частности, API буфера обмена не заменяет команду insertText, которую можно использовать для программного замещения текста в месте курсора с сохранением буфера отмены (истории правок) в обычных элементах textarea и input.
Учитывая широкое распространение, крайне маловероятно, что браузеры откажутся от поддержки этого без предоставления альтернативы и периода предупреждения об устаревании.
@tut Я только что добавил дополнительную информацию для отладки здесь, на Meta, чтобы мы могли попытаться разобраться, что происходит. Пожалуйста, попробуйте следующее:
Откройте Meta в Safari.
Откройте консоль разработчика.
Попробуйте загрузить файл.
Кликните в консоли разработчика.
Нажмите Cmd + a, чтобы выделить все логи.
Нажмите правой кнопкой мыши → Сохранить выделенное.
Сохраните текстовый файл где-нибудь, а затем загрузите его сюда (предположительно, используя Firefox).
Ого, это странно! Safari заменяет ... (три точки) на символ многоточия …. Из-за этого позже не удаётся заменить плейсхолдер на настоящий URL.
@tut, откройте «Системные настройки» → «Клавиатура» → «Текст» и проверьте, нет ли там настроенной замены. Если я добавлю замену ... → …, то смогу воспроизвести ту же проблему в Safari на своей машине:
(у вас может выглядеть немного иначе из-за более старой версии macOS)
Да, это выглядит вполне вероятным — извините, что ранее отверг эту идею, @sam. Похоже, Safari применяет замены текста на уровне ОС к тексту, который мы добавляем через execCommand("insertText",. Интересно, это новое поведение в Safari 15.5 или так было всегда, и мы просто не замечали этого
@david, у меня не настроена такая замена в настройках клавиатуры. Однако теперь, когда я знаю, что искать, я могу подтвердить, что замена происходит. Я даже могу увидеть это в процессе набора текста. И я могу это проверить, используя стрелку назад. Когда я дохожу до символа многоточия, курсор перепрыгивает обратно через все три точки, которые были введены как отдельные символы.
То же самое происходит в приложениях Заметки, Предпросмотр, Сообщения и Почта, но не в Календаре, Картах, Фотографиях и (очевидно) Firefox. Похоже, это особенность конкретного приложения, а не системная настройка.