[О блоге] [наверх] [пред] [2020-02-29 12:30:49+03:00] [8e0b459c1eb03995fb00efbbed3704eb07e33106]
Темы: [hate]

Может, нам слегка успокоиться с JavaScript?

https://habr.com/ru/post/490412/
Да, Да, ДА!!! Нам уже даааавно пора завязать с этим ужасом!
Всё очень хорошо сказано. Что-то я даже скопирую сюда.

Когда "группа высокооплачиваемых и высококвалифицированных специалистов,
у каждого из которых установлен Chrome на последней модели Mac Pro,
которые работают в офисе на расстоянии не больше километра от каждого
сервера, на который они заходят. И вот эти ребята работают, а потом
поворачиваются и хихикают над всеми остальными, у кого нет такой
конфигурации. Учтите, что любое из следующих условий помешает работе
вашего JavaScript" (некоторые пункты уберу, так как высосаны из пальца
IMHO):

    * Кто-то на медленном компьютере.
    * Кто-то на медленном соединении.
    * Кто-то на телефоне, то есть на медленном компьютере с медленным
      соединением.
    * Кто-то застрял со старым браузером на компьютере, который он не
      контролирует — на работе, в школе, в библиотеке и т. д.
    * Кто-то пытается написать небольшую программу, которая
      взаимодействует с вашим сайтом, у которого нет API.
    * Кто-то пытается загрузить копию вашего сайта, чтобы почитать в офлайне.
    * Кто-то — это кэш Google или Архив Интернета.
    * Кто-то сломал графическое окружение в Linux и пытается выяснить,
      как его починить, загружая статьи с вашего сайта через браузер
      командной строки Elinks.
    * Кто-то внёс изменения в ваш сайт с помощью пользовательского
      скрипта, и это мешает вашему собственному коду.
    * Кто-то использует NoScript и видит на вашем сайте только пустой
      экран. Они настолько раздражён, что просто уходит, а не вносит ваш
      сайт в белый список.
    * Кто-то использует NoScript и вносит в белый список вас, но не один
      из десятков трекеров, которые вы используете. Позже вы случайно
      ставите скрипт в зависимость от трекера, и он таинственным образом
      больше не работает для таких пользователей.
    * Вы даёте критически важному скрипту название, связанное с
      рекламой, и он не загружается у десятков миллионов пользователей с
      блокировщиками рекламы.
    * Ваш CDN упал.
    * У вашего CDN есть адрес IPv6, но на самом деле он не работает (да,
      я видела такое и у компаний стоимостью в миллиард долларов, и у
      федерального правительства). Заходит кто-то по IPv6, страница
      загружается, но JS вылетает по таймауту.
    * Вы случайно использовали новую функцию, которая не работает в
      предыдущей версии самого популярного браузера. Выводится
      синтаксическая ошибка, и ни один из ваших сценариев не запускается.

Если раньше люди в HTML просто прописывали ссылку <a href="...>, то
открывалась масса возможностей что с ней сделать:

    * Я могу перейти по ссылке.
    * Я могу открыть ссылку в новой вкладке или окне с помощью
      комбинации клавиш ctrl, shift и колёсика (средней кнопки) мыши.
    * Я могу скопировать адрес ссылки и вставить его куда-нибудь или
      открыть в другом браузере, или ещё что-нибудь.
    * Я могу использовать ' в Firefox для поиска только ссылок.
    * В некоторых браузерах — Opera, Konqueror, uzbl, Firefox с
      vimperator? — есть горячая клавиша, которая показывает цифру или
      букву рядом с каждой ссылкой на странице, так что вы можете очень
      быстро «щёлкнуть» ссылку визуально, даже не касаясь мыши.
    * Я считаю, что скринридеры обрабатывают ссылки специальным образом.
    * Простые краулеры составляют по ссылкам карту сайта.
    * Браузеры начинают экспериментировать с предварительной загрузкой
      видных ссылок, так что если пользователь действительно нажимает на
      неё, то страница открывается мгновенно.

С JS-ом, когда делают <div>, всё это само собой пропадает.

Ну и дальше в статье речь про самодельные <select>, поля ввода, перехват
клавиш клавиатуры (ломая горячие клавишы броузера) ("Веб-разработчики
сами вообще пользуются браузерами?"). Я лично видел на практике что в
модных React single page application-ах переставала работать "назад",
обновление страницы (Ctrl-R). Это хуже чем GNU/Linux и ситуация с IPv4!

    [оставить комментарий]