VEG » 31.07.2014, 10:02
Согласен, что некоторые вещи можно сделать только при помощи CSS, всегда стараюсь так делать, если это не тормозит и не является серьёзным переусложнением. Например, на vegalogic.com изначально раскрывающееся меню (что появляется при ширине 320 пикселей) я сделал исключительно средствами CSS (хитрость с checkbox и следующим за ним элементом — для спойлера пришлось бы делать такое же). Но браузера неприятно «тупили» при открытии меню, поэтому переделал на JS — отзывчивость сразу же поднялась в несколько раз.
Ну а что касается пользователей, что бродят по вебу без JS. Я думаю, они сами отлично знают, что из-за этого многие сайты поломаются, поэтому когда увидят, что что-то на сайте не работает — активируют JS для этого сайта (вероятнее всего ведь JS выключен чем-то вроде NoScript). Я к тому, что в приоритете баланс простоты реализации и производительности: если решение на JS проще и быстрее, чем решение исключительно на CSS, я бы всегда выбирал первое. Без JS в вебе делать нечего.
Кто-то отключает JS для того, чтобы отсечь вирусам возможность запустить себя. Но на самом деле сейчас браузера очень круто защищены, в Chrome и подобных браузерах мало найти уязвимость в движке, нужно найти ещё и незакрытую уязвимость в ОС или в родительском процессе, поскольку процессы с открытыми сайтами запускаются вообще без каких-либо прав. Сейчас такая же штука в разработке и для Firefox, обещают в начале следующего года зарелизить. Хотя в принципе достаточно просто держать у себя актуальное на данный момент ПО без известных уязвимостей (то есть всегда обновляться) — и можно не переживать по поводу вирусов. Ещё бы Mozilla поддержала Pepper Plugin API (безопасная и кроссплатформенная альтернатива используемому в Firefox древнему Netscape Plugin API) — вообще было бы замечательно. Но они, к сожалению, воротят нос и пихают JS везде где нужно и где нет. Хотя на самом деле идея Native Client и Pepper Plugin API от Google — очень круты. Нативный код в вебе — лучше и быстрее не придумаешь! :)
Добавлено спустя 8 минут 42 секунды:
Хотя какие-то минимальные вещи по классу no-js у body, конечно, можно сделать. Например, спойлеры можно сразу сделать открытыми в таком случае (без возможности закрыть) :)