Лучший текст для браузера — «слишком старая версия для работы на этом сайте»

При входе в SDMB (а также на try.discourse.org) сегодня я вижу следующее сообщение:

К сожалению, ваш браузер устарел и не работает на этом сайте. Пожалуйста, обновите браузер для просмотра богатого контента, входа в систему и ответов.

Однако я использую последнюю версию своего браузера, SeaMonkey 2.53.13, которая была выпущена всего четыре дня назад. Discourse мог решить не поддерживать его, но утверждать, что он «слишком старый» для работы с Discourse, — неверно. Действительно, если я заменю строку User-Agent браузера, то обнаружу, что всё работает нормально.

Проблема, похоже, заключается в неточном определении User-Agent со стороны Discourse. По умолчанию строка User-Agent SeaMonkey заявляет о совместимости с Firefox:

Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.13

Если изменить строку User-Agent следующим образом, чтобы скрыть совместимость с Firefox (через Редактирование > Параметры > Дополнительно > Сетевое взаимодействие HTTP > Строка User-Agent > Идентифицировать как SeaMonkey), то SeaMonkey снова сможет посещать сайты Discourse без видимых проблем:

Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 SeaMonkey/2.53.13

Я понимаю, что Discourse может не желать поддерживать браузеры, подобные SeaMonkey, которые больше не являются основными, но было бы неплохо, если бы такие браузеры не блокировались заранее от доступа к сайтам Discourse. И даже если такие браузеры блокируются заранее, было бы неплохо, если бы Discourse не сообщал ложную причину этого.

Пожалуйста, улучшите определение User-Agent, чтобы оно проверяло всю строку до конца, прежде чем решать, является ли пользовательский агент «слишком старым». (Я подозреваю, что сейчас оно просто ищет имена и версии поддерживаемых браузеров, независимо от их положения в строке User-Agent.) В конце концов, вы не блокируете браузеры, потому что они сообщают старую версию Mozilla в начале строки, так почему же вы должны блокировать браузеры, потому что они сообщают старую версию Firefox в середине строки?

Если по какой-то причине изменение алгоритма определения нежелательно или непрактично, то измените поведение при обнаружении якобы несовместимого пользовательского агента: вместо того чтобы (возможно, ложно) сообщать пользователю, что его браузер «слишком старый» и блокировать дальнейший доступ, сообщите пользователю, что его браузер не поддерживается, и предоставьте ссылку на список поддерживаемых браузеров, но дайте ему возможность продолжить работу с использованием своего текущего браузера.

Скорее всего, это связано с тем, как Discourse проверяет строку user agent. На мой взгляд, у Seamonkey не должно быть опции заголовка Firefox, если он будет показывать устаревшую версию Firefox, которая несовместима с Discourse. Вероятно, это результат плохого планирования со стороны Seamonkey, а не проблемы с Discourse.

2 лайка

Обычно Duecourse пытается определять неподдерживаемые версии с помощью проверки функций, а не анализа User-Agent.

Недавняя проблема с редактором в старых версиях Firefox вынудила их прибегнуть к анализу User-Agent, так как при запросе к определённым версиям Firefox они с готовностью (и технически корректно) сообщали о поддержке необходимых функций, хотя на самом деле они содержали ошибки и работали некорректно.

Проблема здесь в том, что Seamonkey по умолчанию сообщает сайтам о совместимости с значительно более старой версией Firefox, а не с той, с которой он фактически совместим.

В данном случае Discourse поступает правильно.

4 лайка

Я не думаю, что всё так просто. Конкретная версия SeaMonkey заявляет о совместимости с определённой версией Firefox, потому что эти две версии браузеров используют одну и ту же базовую кодовую базу. Можно с уверенностью предположить, что эта версия SeaMonkey может выполнять как минимум все функции, доступные в соответствующей версии Firefox. Помимо этой базовой совместимости, конкретная версия SeaMonkey может также поддерживать определённые функции, которые присутствуют в более новых версиях Firefox, хотя и не обязательно все из них. Поэтому было бы нечестным (и в целом не полезным) для SeaMonkey явно заявлять о совместимости с этими более новыми версиями.

Короче говоря, то, что новый браузер заявляет о совместимости со старым браузером, не означает, что новый браузер не поддерживает и более новые функции. Опять же, большинство современных браузеров заявляют о совместимости с Mozilla/5.0, но это не значит, что они строго ограничены возможностями того древнего движка.

Не могли бы вы попробовать открыть редактор и проверить, правильно ли работают кнопки «Полужирный»/«Курсив»? Это была проблема, с которой мы сталкивались в старых версиях Firefox.

1 лайк

Одна из альтернатив определению версии UA, которая соответствует близкой версии Firefox (89 → 91), — это проверка наличия свойства window.visualViewport. Возможно, стоит перейти на этот метод? Но тогда нам всё равно нужно добавить исключение для Safari 12.5 до января :weary:

Не могли бы вы открыть редактор и проверить, правильно ли работают кнопки «Полужирный»/«Курсив»? Это была проблема, с которой мы сталкивались в старых версиях Firefox.

Я могу подтвердить, что эти кнопки в настоящее время работают у меня некорректно в SeaMonkey 2.53.13, но работают в Firefox 100.0.2. Я раньше не пробовал их использовать, так как всегда писал прямо в Markdown.

Теперь, когда вы упомянули об этом, кнопка «Ответ» тоже не работает в SeaMonkey здесь, на meta, хотя на boards.straightdope.com (работающем на hosted-by-discourse.com) она работает.

1 лайк

Значит, предупреждение, которое у нас есть вверху, действительно актуально?

2 лайка

Нет, в такой формулировке — нет, потому что мой браузер не «устаревший», и мне не нужно его «обновлять». Минимум, что вы могли бы сделать, — изменить формулировку на: «Похоже, вы используете неподдерживаемый браузер. Пожалуйста, переключитесь на поддерживаемый браузер, чтобы просматривать расширенный контент, входить в систему и отвечать».}

4 лайка

Да, я согласен обновить текст: слово «старый» действительно несёт оценочный оттенок, а Lynx всё ещё активно разрабатывается.

3 лайка

@nbianca, не могли бы вы обновить текст?

2 лайка

Я обновил текст в этом PR:

2 лайка

Эта тема была автоматически закрыта через 4 дня. Новые ответы больше не принимаются.