LINUX.ORG.RU
ФорумTalks

Почему функциональность Modernizr.js не предоставляется из коробки?

 , ,


0

2

subj. Библиотека существует уже несколько лет, почему бы не внести что-то подобное в стандарт JS/DOM/АБВГД? Это было бы дичайше логично и избавило бы веб-сайты от оверхеда при самостоятельном определении возможностей браузера.

Для Ъ: Modernizr — это JavaScript-библиотека, которая узнаёт, что из HTML5 и CSS3 умеет браузер пользователя.

Почему jQuery не предоставляется из коробки?

Библиотека существует уже несколько лет, почему бы не внести что-то подобное в стандарт JS/DOM/АБВГД? Тем более большая часть сайтов использует jQuery.

Black_Roland ★★★★
()
Ответ на: Почему jQuery не предоставляется из коробки? от Black_Roland

Таки это две большие разницы. Вот информацию за User-agent браузер предоставляет, почему бы не предоставить детальные сведения? А JQuery - это, по большому счёту, «синтаксический сахар» для того, что и так есть.

heilkitty ★★
() автор топика
Ответ на: комментарий от heilkitty

Чтобы проверить есть ли у браузера та или иная фича достаточно проверить существует ли какой-нибудь объект, который предоставляет API, либо проверить существует ли нужное свойство. Если undefined, то фича не работает. По моему этого вполне достаточно.
Если ты пишешь код, то тебе все равно придется проверять есть ли у браузера те или иные фичи, только написать if (Modernizr.csstransitions) {} немного проще, чем забивать себе голову всякими if (undefined !== document.documentElement.style.transition) {}.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Тем более как ты себе это представляешь. Есть например Firefox 3.6, выпущенный 100 лет назад, когда не думали о CSS transforms. Берем и проверяем например console.log(document.csstransforms). Что должно напечататься? false? А откуда древний Firefox знает что нужно вернуть false, если он не знает что в будущем такая фича появится. Лучшее на что можно рассчитывать это undefined. Причем этот браузер начнет возвращать false, другой undefined, третий вообще NaN и начнется опять балаган. После добавления новой фичи никто не будет изменять код старого браузера, чтобы он начал возвращать false. Modernizr не является кодом браузера и разработчик всегда может использовать последнюю версию Modernizr, которая умеет определять все фичи браузера, включая самые последние, которая будет давать всегда один и тот же результат независимо от версии и типа браузера. Даже если сейчас запилить такой функционал в браузер, то все равно придется использовать библиотеки типа Modernizr, так как старые браузеры не поддерживают такого функционала.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)

не предоставляется
JavaScript-библиотека

/0. Предоставляется же, иначе как оно работает. Просто в некоторых случаях нужно более подробное ковыряние ввиду частичных реализаций, багов и прочего.

Deleted
()
Ответ на: комментарий от Deleted

Да все равно не удобно. Нужно еще проверять свойства со всякими префиксами типа -moz, -webkit, -ms и т.д. Потом может понадобится не только поддержку CSS свойств проверять. Я Modernizr только в двух случаях использовал: когда нужно было сделать разные стили для сенсорных и не сенсорных устройств и когда нужно для jCarousel сообщить о поддержке tranform. В первом случае без Modernizr пришлось бы городить костыли свои, во втором случае это все просто красиво и компактно выглядит в коде, хотя и совсем не обязательно:

        $('.jcarousel').jcarousel({
            wrap: 'circular',
            transitions: Modernizr.csstransitions ? {
                transforms:   Modernizr.csstransforms,
                transforms3d: Modernizr.csstransforms3d,
                easing:       'ease'
            } : false
        });

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

От префиксов отказались же. Только старые ещё живы, доживают последние минуты. Поддержка не только CSS делается аналогично.

А вообще, если говорить о CSS, в нём самом есть @supports. Да и в жабаскрипте тоже. С каких версий браузеры это умеют, правда, не скажу.

когда нужно для jCarousel сообщить о поддержке tranform

Это костыль. Почему тебе надо самому это сообщать, оно должно само проверять и работать соответственно.

Deleted
()
Ответ на: комментарий от Deleted

Не должно. Мне наоборот нравится как там все сделано. Хочешь автопрокрутку - включи плагин, хочешь пагинатор - на тебе другой плагин, хочешь стрелками переключать - на тебе плагин, только скажи где эти стрелки. Он очень простой и гибкий и это удобно. С transform так же - в плагине лишнего кода нет, если нужно определение свойств, то подключи Modernizr. Причем он может и так уже быть подключен и тогда не будет дублирования кода.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Ну, тогда грызи кактус как есть :)

Deleted
()
Ответ на: комментарий от Deleted

Я не говорю что нужно обязательно использовать Modernizr, вообще ничего не обязательно и можно на чистом JS писать, но зачем это делать если есть удобные библиотеки? И с определение сенсорных устройств не все так просто на сколько я помню.

Black_Roland ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.