засахаренный script

Недавно Джон Резиг описал в статье «Degrading Script Tags» любопытную идею: использовать содержимое тега script, подключающего внешний файл. У этого подхода два плюса: во-первых, становится возможно писать только один тег вместо двух, а во-вторых, текст «второго» скрипта не выполнится, если почему-то не загружен файл. Это сразу же пригодилось и Андрею Сумину для его библиотеки. А вот мне хочется покритиковать такой подход.

Во-первых, название «Degrading Script Tags» и предполагаемое поведение противоречит привычному веб-разработчикам смыслу «деградирующих элементов», тому, как обычно в html используется содержимое специфических тегов. Насколько я помню, если почему-то не проинициализировался object, то его содержимое будет отображено, чтобы пользователь мог прочитать что-нибудь в духе «установите такой-то плагин для просмотра». А в предлагаемом подходе всё работает наоборот — содержимое выполнится, только если файл загружен успешно.

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

И в-третьих, вызов document.getElementsByTagName — не такая уж дешёвая операция, это я как неоднократно пострадавший за производительность яваскрипта говорю : ) А вызывать её для нескольких скриптов по очереди ещё хуже.

В общем, экономия одного тега — это просто смешной аргумент, а ради проверки на загруженность файла выписывать такие кренделя не стоит. Хотя на первый взгляд идея привлекательная, не спорю.

Артемий Трегубенко,
,

comments powered by Disqus