Сторінка контактів готова. І як я даю ради з вимкненим Javascript

fullstackdevpw.addEventListener('stageComplete', function(e) {
    if (e.stage === 1) alert('Contact page is complete!');
});

Вітаю обох моїх читачів!

Моя контактна форма вже деякий час працює. Вона значилася першим пунктом у дорожній карті fullstackdev.pw.

Забрала та справа трохи часу, бо хотілося і від спаму захиститися, і лишити форму зручною для людей. Я ж теж користувач. І не люблю я цих "лежачих полісменів" на кшталт captcha. Тож будь-які перевірки на бота мають відбуватися невидимо для людського ока. Але тоді постало питання: мав якісь ідеї, як того досягти з Javascript, та як бути, якщо користувач вимкнув його в браузері?

Отже,

чи маю я брати до уваги користувачів із вимкненим Javascript?

Вирішив таки обмежити для них функціонал.

Так, я свідомий того, що чимало народу має вагомі підстави вимкнути javascript. На перший погляд їх аргументи дуже переконливі. Я аж поспішив засмутитись, що стільки часу і сил віддав Javascript. Але все обміркувавши, у мене сформувалась власна думка по кожній з пересторог.

Приватність

Головна тривога таких користувачів — приватність. Розумію. Я теж переймаюся власною приватністю. Персональний сайт може виявляти деякі дані, які власник може хотіти приховати від онлайн-сканерів, але залишити доступними для користувачів-людей. Наприклад, імейл чи телефон. Я просто не маю ідей, як досягти цього без певної обробки даних і зміни частини сторінки у вікні браузера.

Базова ідея полягає в тому, що сканер навряд чи використовуватиме JS, дивитиметься сторінку крізь екран або клацатиме апаратним пристроєм-вказівником. Хоча деякі з цих поведінок можна повторити в браузері в безголовому режимі, але якщо їх брати до уваги одночасно, то можна досягти високого рівня перевірки. Якщо, звичайно, вас не будуть ламати цілеспрямовано. Тому для великих сайтів треба ґрунтовніше залучати до перевірки сервер, скрипти якого невидимі користувачеві

Мушу зазначити, що поважаю приватність користувача, відтак будь-які деталі, якими користувач може поділитися, не зберігатимуться і не передаватимуться третім особам чи піддаватися зловживанням та ризикам іншого роду. Можливо, з часом додам якусь Політику Приватності. Навіть не використовую куки, крім тих, які пече CMS для авторизації користувача — тобто лише мене.

Інші перестороги?

Продуктивність

Я мав поганий досвід з продуктивністю сайтів, надто важких для моїх пристроїв. Ніколи не мав потужних чи найновіших апаратів, тож це моя буденність, а не теоретизування. Але замість того, щоб вимкнути JS для всіх сайтів, я уникаю тих, що недолуго зроблені.

Машина, якою я користуюся для розробки, так само не надто продуктивна — це невеликий і легкий ноутбук, призначений для подорожей і тривалої роботи від батареї. Тож я не просто чутливий до продуктивності, я виявляю її нестачу на етапі розробки. ОНОВЛЕНО: ця частина більше не актуальна. В якийсь момент мене стала сильно стримувати нестача продуктивності, тож мусив придбати потужний пристрій

Аби зменшити негативний вплив скриптів на продуктивність сайту, я уникаю використання бібліотек, які були вельми корисними в минулому, коли кожен браузер запроваджував власні "стандарти" для веб-технологій. За наших днів [коли ера IE<9 безповоротно в минулому] використовувати ES5, і все більше ES6, цілком безпечно.

Я також завжди використовую строгий режим, який лікує деякі особливості самої мови, що можуть негативно позначатися на продуктивності.

Нарешті, використовую JS мінімально — лише коли це справді треба. Більше зауважень у мене до анімацій і переходів CSS (на моєму сайті). Саме тому я не вельми задоволений моєю домашньою сторінкою. Займуся цим скоро.

Передача даних

Користувач heylem, автор обраної відповіді з повідомлення, на яке я посилаюся після першого підзаголовка, нарікає на те, що деякі вебсайти "перезавантажують світ що 15 секунд чи близько того без жодних на те підстав". Ви бачили такі сайти? Я — ні. Навіть приймаючи, що автор використав перебільшення, щоб підкреслити важливість тримати трафік мінімальним, обвинувачений AJAX був винайдений власне для ціє мети: оновлення лише частини сторінки, відправляючи форму на сервер, складання товару в кошик і т.п. Я не уявляю, за яких умов це може вимагати більшої передачі даних, аніж перезавантаження цілої сторінки, особливо з усіма медіа, шрифтами, стилями... Тож ця тривога для мене звучить зовсім параноїдально. Диву даєшся, нащо таким людям комп'ютер, Інтернет та й електрика взагалі, якщо так люто опираються настільки зручним технологіям.

Доступність

Наразі fullstackdev.pw не містить якоїсь унікальної інформації, яка б мала цінність для широкого загалу, тож я не ставив мети розширити свою аудиторію ще й користувачами з фізичними вадами. Однак мушу зануритися в технологію ARIA, бо без неї не уявляю серйозного сайту з великим трафіком, ну й дослідити як JS може впливати на доступність теж цікаво. Поточно мій JS просто нічого не блокує і не ховає від жодних користувачів, незалежно від можливих фізичних вад.

Цільова аудиторія

Якщо бути до кінця відвертим, головна моя аудиторія має якимось чином придбати мої послуги чи поширити інформацію про них. Хто ці люди, що вимикають JS? Як я розумію, це переважно різного роду інтернет-професіонали або вельми обізнані користувачі, які задоволені статичним вмістом сторінок, згенерованих сервером. Вони надто переймаються своєю онлайн безпекою і приватністю, відмовляючись від будь-якої обробки чи передачі власних даних, замість обережного з ними поводження. За яких обставин така людина вирішить сконтактуватися зі мною за допомогою форми, даючи свій імейл для зворотнього зв'язку? Чи її цікавитимуть послуги фронт-енд розробника? І я вже мовчу про оплату онлайн. Як казав мій давній шеф — не наш клієнт :)

Повторюся, нікого не ігнорую цілковито, всі можуть переглядати будь-які сторінки, а про обмеження повідомляється тегом <noscript>.

Телеграм

Повернімося до форми. У вас траплялося, що вам скаржилися, ніби імейли не доходять? Мені навіть доводилося з'ясовувати це з провайдером і виявлялося, що якась адреса з ланцюжка серверів, що беруть участь в передачі повідомлення, потрапляла в один з чорних списків спаму, а тобі не повертається жодного повідомлення про помилку... Кожне повідомлення, відправлене моєю формою, я отримую в своєму Телеграмі, який для мене найкращий месенджер з огляду на синхронізацію пристроїв, апетиту до їхніх ресурсів та інших переваг. На даний момент жодної скарги на загублене повідомлення. Інакше виправлю це твердження.

Також я зробив нестандартні, як на мене, повідомлення для взаємодії з користувачем. Принаймні не пригадую, щоб бачив подібні. Запрошую поклацати форму — я не ображуся на беззмістовне повідомлення від живої людини :)