Убедитесь, что в разделе /my/preferences/interface в Других настройках интерфейса отмечена опция Открывать все внешние ссылки в новой вкладке (это, кажется, настройка по умолчанию)
Найдите любой пост со внешней ссылкой — случайные примеры в meta и в try
Нажмите на первую внешнюю ссылку, которую вы найдете в этом посте (желательно ту же самую)
Она открывается в новой вкладке, отлично.
НО:
Убедитесь, что в разделе /my/preferences/interface в Других настройках интерфейса отмечена опция Открывать все внешние ссылки в новой вкладке (это, кажется, настройка по умолчанию)
Откройте тот же пост, что и в предыдущем тесте
Выделите любой текст в этом посте (1+ буква, 1+ слово, подойдет любое выделение) — вы должны увидеть плавающую кнопку Цитата
Нажмите на первую внешнюю ссылку, которую вы найдете в этом посте
Теперь внешняя ссылка открывается в текущей вкладке, а не в новой.
На самом деле вы можете просто попробовать это на этом посте:
Я могу это подтвердить. Не уверен, что это стоит исправлять, так как это похоже на пограничный случай, когда пользователь сам напрашивается на неприятности.
Если у вас нет навыков для отправки PR (я, думаю, их тоже не имею), то просто использование Ctrl+клик для открытия в новой вкладке сработает. Это не сложно автоматизировать и это решит проблему на любом сайте, даже на тех, которые не открывают ссылки в новых вкладках.
Я бы использовал Ctrl+клик, но у нас есть отличная опция, называемая Открывать все внешние ссылки в новой вкладке.
Но на самом деле эта опция делает Открывать случайные внешние ссылки в новой вкладке.
Мне потребовались месяцы, если не годы, чтобы выявить схему воспроизведения.
Мне это казалось действительно случайным.
Может быть, стоит убрать эту опцию для обеспечения последовательного поведения?
Я помню, как пытался настроить среду разработки Discourse для простого PR с исправлением CSS.
Но, если я правильно помню, я сдался, потому что мой ПК был слишком старым, и я не мог установить или запустить все необходимые требования.
Надеюсь, это поможет. Я пока не тестировал это thoroughly, но кажется, что работает нормально.
Редактирование: user-select: text нужно добавить к ссылке, потому что на это влияет не только выделенный текст внутри .cooked, но и любой выделенный текст на сайте. Я изменил код.
Спасибо, Сэм. Я просто более внимательно проверяю это перед отправкой, и, к сожалению, этого оказывается недостаточно. Это решение работает только в Chrome.
Вот фрагмент кода, вызывающий ошибку (из app/assets/javascripts/discourse/app/lib/click-track.js)
// Отменить клик, если он сработал как часть выделения.
const selection = window.getSelection();
if (selection.type === "Range" || selection.rangeCount > 0) {
if (selectedText() !== "") {
return true;
}
}
Удаление этого кода решает проблему и, похоже, не ломает тесты (у меня некоторые тесты падают и до, и после изменения по какой-то причине, но новых, видимо, не появляется).
Поэтому я задаюсь вопросом, выполняет ли этот код какую-либо полезную функцию, потому что одно точно: он не делает то, о чём заявлено. Иначе заявитель об ошибке вообще не мог бы переходить по ссылкам при «выделении + клике», но это не его жалоба.
Может, кто-нибудь объяснит, что этот код должен был accomplishing?
Возможно, это сделано для того, чтобы предотвратить открытие ссылок в новых вкладках при простом выделении текста для цитирования?
Когда найденный вами код отключен и включена опция «Открывать все внешние ссылки в новой вкладке»,
пожалуйста, попробуйте выделить (нажать кнопку мыши, перетащить, отпустить) текст, содержащий ссылки, чтобы убедиться, что ни одна из них не открывается.
Попробуйте выделить текст, окружающий ссылки, а также выделите текст, заканчивающийся посередине ссылки.
Выделение должно всегда работать только как выделение, не открывая ссылки.
Я смутно помню, что существовал обходной путь для конкретного браузера. Может, попробовать в Safari, Firefox или Chrome, выделив текст, чтобы проверить, сработает ли что-то?
У меня есть доступ только к платформе Windows для тестирования.
Эту правку можно легко протестировать, так как файл можно вставить целиком прямо в консоль.
@sam, ты знаешь, какой файл нужно вставить в консоль после загрузки страницы темы? @Aleksey_Bogdanov мог бы предоставить этот файл, и я вставлю его в консоли своих браузеров Vivaldi, Firefox под Windows и Kiwi под Android 9, а ты вставишь его в свои браузеры Safari под iOS и macOS.