← На главную

Сусам Пал призвал не ломать стандартные функции браузера

23.05.2026 22:25 · hackernews

Сусам Пал выпустил статью-ворчалку о современных веб-дизайнерских практиках. Он проводит параллель с известным принципом из криптографии: «Don't roll your own crypto» — не пиши свою криптографию. Речь не о том, что никто не должен этого делать, а о том, что в продакшене, где важна безопасность, нельзя полагаться на самодельную, нерецензированную реализацию. Надо использовать проверенные временем библиотеки. Раньше это нарушали сплошь и рядом, Пал сам видел кучу кривых самописных реализаций RC4 с утечками данных. Сейчас в регулируемых сферах за такое можно получить огромный штраф.

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

Пал признаёт, что бывают исключения, но фокусируется на том, как такие самоделки ломают пользовательский опыт. Он не эксперт по юзабилити — он просто пользователь, которого это бесит.

Больше всего его раздражает кастомная прокрутка. Когда сайт переопределяет стандартное поведение скролла, всё ломается: страница едет слишком медленно или быстро, клавиатурная навигация может не работать. Привычный, отточенный до автоматизма механизм превращается в нечто, о чём приходится задумываться.

На втором месте — кастомная навигация по ссылкам. Браузеры созданы для этого. Худший пример, по мнению Пала, — GitHub. Клик по ссылке там запускает гигантский кусок JavaScript. Он предлагает проверить: откройте F12 в Firefox или Chrome, найдите вкладку Debugger/Sources, поставьте точку остановки на событии click и кликните по любой ссылке на GitHub. Вы увидите, что там происходит. Ирония в том, что иногда открыть ссылку в новой вкладке быстрее, чем ждать, пока скрипты GitHub обработают навигацию в текущей.

Поле ввода пароля — ещё одна беда. К счастью, кастомные реализации встречаются всё реже. Браузерное поле умеет сохранять пароли, автозаполнять их, генерировать стойкие пароли, предупреждать о небезопасном HTTP-соединении и работать с менеджерами паролей и спецвозможностями. Замена на свою поделку всё это ломает. А если маскировать обычное текстовое поле, операционная система и ассистивные инструменты могут воспринимать пароль как обычный текст.

Кастомные виджеты выбора даты — сплошная головная боль. Пал понимает, что <input type="date"> не умеет выбирать диапазон, но предлагает просто сделать два поля: начальная и конечная дата. Он готов заплатить эту небольшую цену, чтобы везде работать с привычным браузерным календарём. Вместо этого приходится разбираться с десятью разными реализациями. В одной нужно выходить из режима месяца в режим выбора года, и обратно переключить месяц уже нельзя. В другой нужно сорок раз нажать на кнопку «предыдущий год», чтобы выбрать год рождения. Третья вообще не даёт вводить дату с клавиатуры. Пользователь не хочет учить каждый календарь — он хочет пользоваться своим родным браузерным.

Общий вывод: прекратите лазить в стандартные элементы форм. Они почти всегда решают старые проблемы, создавая новые. И ещё одна просьба: хватит менять дизайн каждые несколько месяцев. Молодые адаптируются, а пожилые родственники автора — нет. Каждое изменение интерфейса для них — как изучение нового инструмента. Пал просит дать им спокойно наслаждаться пенсией. Он проводит аналогию: представьте, что Linux-дистрибутив каждые несколько месяцев переписывает все команды и их флаги. Или что кнопки на стиральной машине каждое утро переставляют в случайном порядке. Никому бы не понравилось.

Читать оригинал →