В настоящее время я не могу выделять и цитировать текст на Android. Это наблюдается уже некоторое время. Что я упускаю? (Android 16 и 17, Chrome)
С такой проблемой я сталкиваюсь время от времени. Текст невозможно выделить. Пока что, кажется, всё работает.
Предполагаю, что следующее не помогает?
- Перезагрузка
- Попробуйте отреагировать на пост, пока не появится всплывающее окно с реакциями, а затем попробуйте выделить текст
Вау. Это помогло! Что за… Это самый странный обходной путь, с которым я когда-либо сталкивался! Спасибо!
Да, такое уже случалось со мной, и этот метод всегда помогал это исправить.
Интересно, связано ли это с устаревшими данными в localStorage? Очень интересно.
Хм. Я всегда думал, что это как-то связано с состояниями. Например, принудительное отображение всплывающего окна с реакциями заставит состояние наведения снова активироваться. Но это лишь предположение.
Диагностика ИИ (GPT 5.6 Sol Ultra) в Codex (если полезно):
Нашёл: Discourse Reactions утекает глобальное состояние «без выделения текста».
- Событие touchstart реакции добавляет discourse-reactions-no-select к в
plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:222. - Этот класс применяет user-select: none и отключает длинное нажатие WebKit для всего документа в
plugins/discourse-reactions/assets/stylesheets/common/discourse-reactions.scss:1. - Если вертикальная прокрутка начинается над кнопкой реакции,
plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:249инвалидирует жест, не удаляя класс. plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:257затем возвращает управление досрочно, оставляя класс навсегда.- Также отсутствует очистка при touchcancel или уничтожении компонента.
Единственное удаление находится в plugins/discourse-reactions/assets/javascripts/discourse/components/discourse-reactions-actions.gjs:690. Это объясняет описанный обходной путь (The popup menu for quoting text is unresponsive on Android): открытие и закрытие всплывающего окна реакций вызывает collapseAllPanels(), восстанавливая выделение.
Самая панель цитирования находится ниже по потоку — она слушает selectionchange и требует реального выделения браузера в frontend/discourse/app/components/post-text-selection.gjs:58. При глобальном user-select: none Android никогда не создаёт это выделение.
История подтверждает эту семью багов: исправление прокрутки 2023 года (FIX: prevents triggering a reaction while scrolling (#224) · discourse/discourse-reactions@d1970cf · GitHub) ввело досрочный возврат при невалидном касании, а частичное исправление 2024 года (FIX: couldn't select text after dismissing a reaction (#296) · discourse/discourse-reactions@c6710ef · GitHub) перенесло очистку в сворачивание панели, но оставило пути прокрутки/отмены неохваченными.
Исправление должно очищать класс при каждом завершённом, отклонённом, отменённом или уничтоженном касании, с регрессионными тестами для touchstart → touchmove → touchend и touchcancel.
Эта ошибка меня давно бесила, рад, что ты нашёл решение ![]()
@davidb для вашего внимания
Привет, @merefield! Я пытаюсь выяснить, связано ли это с другим исправлением, которое я выпустил несколько недель назад. Оно должно было затрагивать только iOS, поэтому мне интересно, что именно подразумевается под «некоторым временем»? Речь идет о нескольких неделях или большем сроке?
Чёрт, извините, я не могу точно вспомнить, но, по моим ощущениям, прошло как минимум несколько недель, хотя я и не уверен на сто процентов.
Я довольно уверен, что эта проблема возникала в Android 16, то есть до выхода Pixel.
В любом случае, конечно, эта проблема может быть не ограничена только Android…
Не волнуйтесь, я проведу локальное тестирование без этих изменений и посмотрю, не мой ли исправление для iOS стало причиной этой проблемы. Если это так, патч, который я выпустил сегодня, может помочь, но сначала я это проверю.
Спасибо, что посмотрели!
У меня эта проблема наблюдается в Chrome на Android уже несколько месяцев на одном сайте, если я правильно помню. (Хотя я тоже не вел точный учет, пока второй сайт, которым я пользуюсь, не обновился два дня назад)