gadyuka (gadyuka) wrote,
gadyuka
gadyuka

Categories:

Открытое письмо ко всем веб-разработчикам!

Уважаемые господа веб-разработчики!

Я, конечно, понимаю, что безвозвратно ушла та древняя эпоха, когда навигация по страницам в многостраничных списках осуществлялась с помощью списка страниц типа "[1] [2] [3] ... [42]" или аналогичного. И я понимаю, что на планшетах и айфонах тыкать в цифирьки в подобном списке не весьма удобно. И я понимаю, что намного удобнее, когда пользователь доскролливает список почти до конца - подгружать ему незаметненько AJAX-ом продолжение списка, эдакую виртуальную "следующую страницу". И это все хорошо и прекрасно, прогресс, мода и все такое.

Но вот чего я категорически не понимаю, чего я не могу ни понять, ни принять, ни простить - это какого черта вы забываете о том, что не все пока еще люди пользуются для просмотра интернет-сайтов исключительно планшетами и айфонами? И скроллят страницы - увы и ах! - с помощью додревнего, хтонического чудовища - скроллбара! И, в итоге прогресса, моды и всего такого, невинного пользователя скроллбара на просторах этих ваших интернетов в последнее время все чаще и чаще подстерегает один очень неприятный облом, заключающийся в том, что пользоваться скроллбаром для скроллинга страниц на сайтах, где внедрен прогресс, мода и все такое - становится практически невозможно.

Ситуация, как вы, я думаю, догадыватесь, выглядит очень просто, но чрезвычайно эффектно: пользователь скроллбара, с нажатой, естественно, на скроллбаре кнопкой мыши (или пальцем тачпада) скроллит страницу вниз. В какой-то момент он доскролливает до точки подгрузки следующей "страницы" списка - новые элементы AJAX-ом подгружаются, дописываются в контейнер, контейнер вертикально растягивается, scrollHeight несчастного контейнера скроллбара увеличивается... но вот позиция указателя мыши или указателя пальца - никуда, увы, не увеличивается и не уменьшается, она остается на той же точке относительно скроллбара. И в следующий момент пользователь скроллбара, продолжая скроллить вниз, или просто случайно чуть сдвинув мышь или палец - получает взрыв головного мозга!

Он видит перед собой уже совсем не те элементы списка, которые видел - и, вероятно, хотел видеть - мгновение назад. А видит некие совершенно другие, чужие элементы, непонятно откуда вдруг взявшиеся и непонятно как далеко отстоящие от тех самых элементов, которые несчастный пользователь скроллбара мгновение назад видел и хотел видеть. Возможно - даже очень хотел их видеть. Может быть даже - внимательно их рассматривал, в тщетной надежде найти в этом ненадежном прыгающем списке нечто милое его сердцу, нечто алкаемое и вожделенное. Может быть даже - о, ужас! - он хотел купить некоторые товары из этого списка - и еще мгновение назад намеревался оторвать от скроллбара кнопку мыши или палец тачпада, чтобы кликнуть этой кнопкой мыши или пальцем тачпада в кнопку "Купить"! Но - нет! Увы ему, несчастному пользователю скроллбара! Где ему искать теперь те товары, ускроллившиеся в неведомые выси? Где ему искать теперь те элементы списка, с которыми он так мечтал ознакомиться повнимательнее? Увы ему, увы!

А ведь есть, скажу я вам, уважаемые господа веб-разработчики, отнюдь ненулевое количество решений данной проблемы. И их даже несколько больше, чем одно. Но почему-то еще нигде, нигде я такого решения не видела. Всем пофиг? Или эти - элементарные - решения просто не поддерживаются по умолчанию любимыми фреймворками, а кодить на чистом javascript все уже разучились? Или никто не знает событийной модели браузеров? Объясните мне, я не понимаю!

Ладно бы, я бы поняла, если бы пользователя скроллбара никак нельзя было бы отличить от непользователя. Так ведь нет же ж! При клике по скроллбару таки возникает отчего-то событие mousedown, а при откликивании от скроллбара, опять же, возникает зачем-то событие mouseup! А цепочка событий scroll (в ответ на которые и выполняется автоподгрузка) возникает - удивительно! - аккурат промеж них! На планшетах и айфонах, опять же, непонятно зачем и почему, возникают совершенно другие события - touchstart и touchend. И есть даже такое страшное событие, как mousewheel, по которому можно отличить пользователя скроллбара от непользователя оного, но при этом и непользователя планшетов и айфонов. И ведь можно же, можно пользователю скроллбара вставлять в контейнер новые элементы списка только после того как он отпустит кнопкой мыши или пальцем тачпада несчастный скроллбар! Подгрузить AJAX-ом элементы, сохранить их куда-нибудь аккуратненько до поры, подвесить на событие mouseup обработчик, который их прочитает оттуда и вставит в контейнер. Можно - причем элементарно. И все будут счастливы. И будет и прогресс, и мода, и все такое - никуда не денется. Так почему же? В чем проблема? Что случилось с вами, люди?!!



P.S. Перепост и/или ссылки сильно приветствуются, ибо крик души! Наболело!
Subscribe

  • (no subject)

    Оу, оу! Год заканчивается как будто бы. Надо бы сюда что-нибудь написать, для галочки, наверное. И для разнообразия на русском языке. Пусть будет ему…

  • (no subject)

    何とかわらわの魂が不安になってきましたわ。春が来るべしなの季節になったと言われているのですけれど、こういう春の気配が今まで見えませぬ。厳しい寒さが続き、どこでも見ると汚い雪溜まりと氷塊のみ散っておきます。出かけてみればすぐ猛烈な強風で倒されてしまい、せめて車まで這っていったら良いのですよ。今年はなん…

  • (no subject)

    お久しぶりだね! ここに長い間現れなかったけど、今なんか新しいポストを投稿したくなってきたなあ。 誰かが生きているもの残っているかな。

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 12 comments

  • (no subject)

    Оу, оу! Год заканчивается как будто бы. Надо бы сюда что-нибудь написать, для галочки, наверное. И для разнообразия на русском языке. Пусть будет ему…

  • (no subject)

    何とかわらわの魂が不安になってきましたわ。春が来るべしなの季節になったと言われているのですけれど、こういう春の気配が今まで見えませぬ。厳しい寒さが続き、どこでも見ると汚い雪溜まりと氷塊のみ散っておきます。出かけてみればすぐ猛烈な強風で倒されてしまい、せめて車まで這っていったら良いのですよ。今年はなん…

  • (no subject)

    お久しぶりだね! ここに長い間現れなかったけど、今なんか新しいポストを投稿したくなってきたなあ。 誰かが生きているもの残っているかな。