перестали работать скрипты на странице

Перестали работать скрипты на странице

Зарегистрирован:
2012-05-20
Сообщений: 70

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-05-20
Сообщений: 70

Использовал скрипт jQuery, который выравнивал по высоте колонки DIV, больше двух недель он работал нормально, было очень редко, когда он не срабатывал, стоило обновить страницу и все работало, а сегодня с утра перестали работать все скрипты и он тоже. Скрипты не работают во всех браузерах.

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-06-27
Сообщений: 65

У тебя ссылки на внешние библиотеки вроде

или ты ссылаешься на библиотеки, которые лежат на сервере?
У меня была аналогичная ситуация, когда перестал работать слайдер, когда ссылки были на внешние библиотеки.
Загрузила
jquery.jcarousel.js
jquery.min.js
на сервер, все заработало. перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-05-20
Сообщений: 70

Все скрипты лежат на сервере.
Проблема в том, что часть скриптов вообще перестали работать, хотя еще раз повторяюсь вчера вечером работали, а сегодня с утра не работают.
А вот скрипт который выравнивает колонки по высоте, то работает то нет, чаще всего нет.
Вот ссылка: http://www.promo-for-you.ru/sub-auth/subject-authority/?Alph=0
попробуйте, загрузите а затем обновляйте страницу, что будет у вас?

Вот что у меня подключено:

Могут ли они конфликтовать друг с другом?

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-05-20
Сообщений: 70

Другие скрипты, это ColorBox и всплывающие подсказки, пока не работают.

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-06-27
Сообщений: 65

И еще, в неткат я бы посоветовала загрузить библиотеку jQuery текущей версии 1.7.2 и подключать её. перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-05-20
Сообщений: 70

Кажется сделал, но вот разобрался ли, не знаю:
— важен порядок подключения скриптов и важно не подключить лишние скрипты, в случае использования разных jQuery скриптов.

Вот тут, наверное, только методом тыка?

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2005-12-12
Сообщений: 576

У вас, судя по приведенному выше коду, два раза грузилась JQuery, причем разных версий (сейчас в коде уже не вижу вызова jquery-1.7.1.js, наверное, исправлено)
Выкиньте из макета nc_js() и подключите скрипты вручную. Тогда, по крайней мере, версия будет постоянная, которая будет работать с вашими плагинами.
Вначале вызывайте скрипт библиотеки, потом плагины.

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-05-20
Сообщений: 70

Подключение исправил, но пришлось добавить новый плагин «Вкладыши. «, но опять возник вопрос: как подружить разные плагины jQuery?

Получается у каждого плагина свой, немного отличный друг от друга, скрипт и они конфликтуют друг с другом, вот теперь не знаю как правильно подключить следующий код:

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2010-07-20
Сообщений: 210

У вас все скрипты работают на всех страницах? или есть такие, которые только на главной или только на внутренней?

перестали работать скрипты на странице. topic. перестали работать скрипты на странице фото. перестали работать скрипты на странице-topic. картинка перестали работать скрипты на странице. картинка topic. Зарегистрирован: 2012-05-20 Сообщений: 70

Зарегистрирован:
2012-05-20
Сообщений: 70

Пока скрипты работают только на внутренних страницах и на некоторых работают одни на других другие.

Источник

Перестали работать js скрипты

Сообщений 13

1 Artyom91 05.10.2012 10:21

Тема: Перестали работать js скрипты

Здравствуйте, всё было хорошо, но в один прекрасный момент перестали работать все js скрипты на сайте. Вообще не понимаю из-за чего это могло произойти, никаких манипуляций не делал, посмотрите _http://icefm.ru

2 admin 05.10.2012 10:28

Re: Перестали работать js скрипты

Что значит «все js скрипты на сайте»? Что именно отвалилось? У меня все прекрасно работает.

PS Очисти полностью кеш браузера. Или воспользуйся другим браузером с которого ни разу не заходил на сайт.

3 Artyom91 05.10.2012 11:35

Re: Перестали работать js скрипты

Хотя нет, не все. Только модульные. У вас проиходит загрузка контента через аякс?

Добавлено: 05-10-2012 17:38:17

Добавлено: 05-10-2012 17:43:03

Нет, всё таки не работает. Браузер в котором работал, очистил кеш и перестало. что делать?

Добавлено: 05-10-2012 18:35:13

Помогите, не знаю что делать. Когда убираешь из кода то начинает работать аякс навигация, слайдер и остальное так же не работает. Вообще что-то не понятное.

4 Hooligan 05.10.2012 14:36

Re: Перестали работать js скрипты

Помогите, не знаю что делать. Когда убираешь из кода то начинает работать аякс навигация, слайдер и остальное так же не работает. Вообще что-то не понятное.

Скорее всего, у вас конфликтуют js скрипты, гдето в 2-х файлах одна функция вызывается! проверьте!

5 Artyom91 05.10.2012 15:30

Re: Перестали работать js скрипты

Скорее всего, у вас конфликтуют js скрипты, гдето в 2-х файлах одна функция вызывается! проверьте!

Врятли, всё работало идеально, изменений никаких не проводилось, вообще бред какой-то. Даже слайдер перестал работать.

6 Kanra 05.10.2012 15:52

Re: Перестали работать js скрипты

Врятли, всё работало идеально, изменений никаких не проводилось, вообще бред какой-то. Даже слайдер перестал работать.

Инклудится в шаблон, но то ли нет прав на чтение, то ли нет файла.

7 Artyom91 05.10.2012 16:31

Re: Перестали работать js скрипты

Уже что-то, вернул этот скрипт заработал файл /templates/music_template/js/bridge.js. Не работает слайдер и кнопка входа

8 Hooligan 05.10.2012 17:04

Re: Перестали работать js скрипты

И вы хотите сказать, что у вас с таким количеством js скриптов, нет пересечений?

Хотя это все слепое ковыряние.

10 Artyom91 05.10.2012 18:35

Re: Перестали работать js скрипты

11 Hooligan 05.10.2012 18:37

Re: Перестали работать js скрипты

12 Artyom91 05.10.2012 19:18

Re: Перестали работать js скрипты

Я конечно очень рад за помощь, но я уверен на 100% что копать нужно не там. Просто понимаете, всё работало идеально, я копал файл проверял модуль который работает с этим файлом, у меня не получилось то что я хотел и вернул все изменения, сохранил зашел на главную и начались косяки. Я всё бросил пошел спать, начал копать вообще ничего не понимал удалял js скрипты, перезагружал их, ничего не изменялось. И решил я загрузить файл который копал с исходника, при загрузке увидил что они отличаются размерами, но когда новый файл встал размер не изменился, он остался таким каким и был на фтп.
Даже не знаю куда копать, может быть такое что из-за необновления кэша я увидел эти изменения спустя несколько часов или дней? А на самом деле эти глюки уже давно?

13 Hooligan 05.10.2012 19:29

Re: Перестали работать js скрипты

Я конечно очень рад за помощь, но я уверен на 100% что копать нужно не там. Просто понимаете, всё работало идеально, я копал файл проверял модуль который работает с этим файлом, у меня не получилось то что я хотел и вернул все изменения, сохранил зашел на главную и начались косяки. Я всё бросил пошел спать, начал копать вообще ничего не понимал удалял js скрипты, перезагружал их, ничего не изменялось. И решил я загрузить файл который копал с исходника, при загрузке увидил что они отличаются размерами, но когда новый файл встал размер не изменился, он остался таким каким и был на фтп.
Даже не знаю куда копать, может быть такое что из-за необновления кэша я увидел эти изменения спустя несколько часов или дней? А на самом деле эти глюки уже давно?

Да, скорее всему виной КЕШ!
удалите старый файл js а уже потом залейте новый или же сравните в них наличие строк!

Источник

Почему не работает тот или иной скрипт…

Сразу оговорюсь, что речь в данной статье пойдет только о Скриптах, которые я публикую на страницах своего сайта http://www.LuksWeb.ru/, хотя большинство советов, о которых пойдет речь ниже, справедливы и для других Скриптов, которые Вы найдете на просторах Интернета.

Чтобы нам разговаривать на «одном языке», давайте уточним некоторые понятия. Что мы вообще понимаем под понятием: СКРИПТ?

Что такое Скрипт?

Скрипт – это небольшая программка, расширяющая функциональность сайта. Скрипт внедряется в код основной web-страницы, написанной на HTML, PHP или других языках программирования. Скрипты чаще всего пишут на языках JavaScript и PHP, а также других языках. Скрипт (программа) может содержать всего несколько строк кода, но бывают и довольно объемные Скрипты, содержащие несколько страниц кода. Это может быть например вывод даты или времени на сайте, а может быть полноценная игра.

На моем сайте Вы можете найти два раздела посвященные различным Скриптам: раздел с одноименным названием: Скрипты и раздел jQuery. Если Вам не понятно в чем разница пройдите по данным ссылкам, и Вы все поймете сами.

Зачем же изобретать велосипед.

Прежде чем опубликовать какой-то Скрипт на своем сайте, я его всесторонне тестирую и испытываю в различных браузерах, смотрю, как он работает в той или иной ситуации. И если обнаруживаю, что в каком–то браузере возникают проблемы, то так об этом и «говорю», публикуя каждый конкретный Скрипт.

Публикуя, какой либо скрипт у себя на сайте, стараюсь максимально подробно «разжевывать» процесс подключения каждого скрипта к web-странице, ведь далеко не все мои посетители в совершенстве знают языки программирования. Собственно говоря для того и публикую, чтобы рассказать новичкам как работают и подключаются Скрипты.

Почему не работает тот или иной скрипт?

А теперь давайте поговорим о том «Почему не работает тот или иной скрипт…».

Действительно не всегда, не у всех и не сразу Скрипты начинают работать, так как хотелось бы. Здесь можно выделить несколько основных причин.

1. Скрипт не работает в браузере …
В силу того, что между компаниями производителями программного обеспечения (в данном случае браузеров) постоянно идет конкурентная борьба, а так же не соблюдений этими компаниями требований консорциума WWW и спецификации HTML, увы, действительно один и тот же код скрипта может разными браузерами отображаться по-разному. А в некоторых случаях в одном браузере скрипт может работать прекрасно, а в другом браузере не работать вообще. Но как я уже сказал выше все эти момент я отображаю в описании скрипта, и если Вы не нашли в статье подобных ограничений или упоминаний, то это значит что скрипт работает во всех распространенных браузерах: IE, Opera, Google Chrome, Mozila Firefox.

Поэтому убедительная просьба: ВНИМАТЕЛЬНО ЧИТАЙТЕ ОПИСАНИЕ. Если Вы не нашли в описании подобных оговорок – это значит что просто Вы где то допустили ошибку. Вывод: ошибку нужно найти и устранить.

2. Скрипт не работает на Ucoz (или других конструкторах сайтов).
Сервисы подобные Ucoz, narod.ru и другие аналогичные конструкторы сайтов используют в своей работе свои собственные разработки. Как правило, подобные сервисы (конструкторы) позволяют создавать (компоновать) сайты из готовых блоков (модулей). При этом часто используют свои собственные языки программирования и разработки, которые подчас просто конфликтуют с общепринятыми языками программирования. В Интернете даже существует отдельное направление: Скрипты для Ucoz.

Кроме того подобные сервисы в большинстве случае умышленно ограничивают функционал размещенных у них сайтов. Ведь все Скрипты создают дополнительную нагрузку на сервер и отнимают ресурсы сервера. Администраторам подобных сервисов проще закрыть большинство функций и возможностей для пользователей, чем разбираться с проблемами и проводить модернизацию своего оборудования, ведь в первую очередь это ДЕНЬГИ! Они живут по принципу: не нравится наш БЕСПЛАТНЫЙ сервис – не пользуйтесь.

Если Вы столкнулись с подобной проблемой, попробуйте обратиться в службу поддержки сервиса и попросить помощи. Возможно, Вам и пойдут навстречу, но мой опыт показывает, что шансов очень мало.

3. РHP скрипт не работает на сервисе: narod.ru
Увы, но конструктор сайтов «НАРОД» (narod.ru) вообще не поддерживает PHP и Скрипты написанные на PHP здесь работать не будут. Так что не стоить даже пробовать и трать свое время и нервы.

4. Локально (под Денвером) скрипт работал без проблем, а после переноса на реальный Хостинг в Интернете Скрипт не работает, что делать?
Закачка на сервер Скриптов, как правило, осуществляется по протоколу FTP. При этом для некоторых Скриптов очень важен режим закачки файлов Скрипта (бинарный или текстовый). Если это критично, то в описании к Скрипту тоже будет указано в каком режиме необходимо закачивать скрипт, обязательно обращаете на это внимание.

Кроме того обратите внимание на права доступа файлов и папок Скрипта. Для некоторых Скриптов это тоже очень важный момент. При установке «неправильных» прав доступа Скрипт может не работать вовсе или в не полном объеме. Если подобное ограничение имеется, я обязательно указываю это в описании. Будьте внимательны читая описание!

Что делать если Скрипт не работает?

В первую очередь внимательно прочитайте описание по Скрипту, который Вы хотите развернуть на сервере в Интернете. Проверьте правильность написание кода. Обычно 80-90% проблем возникает именно из-за нашей невнимательности : закачали не в том режиме или неправильно выставили права доступа (это очень актуально для Unix ОС), потеряли какой-то знак в коде и т.д.

Обратите внимание на характеристики Хостинга. Особенно если ваш сайт размещается на бесплатном Хостинге или создан с помощью какого либо конструктора сайтов.

Если так и не удалось самостоятельно решить проблему и запустить скрипт, обращайтесь в службу техподдержки вашего Хостинга. Даже на бесплатных Хостингах такая служба существует и часто адекватно и оперативно реагирует на обращения своих клиентов.

Компания IPhoster предоставляет свои услуги по принципу «все включено» в независимости от тарифного плана, т.е. за свои деньги Вы получите полный набор профессиональных инструментов и вопрос о неработоспособности Скриптов из-за технических характеристик Хостинга отпадет сам собой.

Но о Хостингах мы поговорим подробнее в одной из следующих статей.

Всего Вам доброго.

Читайте также другие наши материалы:

Источник

WordPress. Скрипты подключились, но не работают

Скрипты, которые я подключил в файле functions.php подключились успешно, но отказываются работать. В чем проблема, я собственно не понимаю.

перестали работать скрипты на странице. wc7s9. перестали работать скрипты на странице фото. перестали работать скрипты на странице-wc7s9. картинка перестали работать скрипты на странице. картинка wc7s9. Зарегистрирован: 2012-05-20 Сообщений: 70

Скриншот файла functions.php:

перестали работать скрипты на странице. UvoYW. перестали работать скрипты на странице фото. перестали работать скрипты на странице-UvoYW. картинка перестали работать скрипты на странице. картинка UvoYW. Зарегистрирован: 2012-05-20 Сообщений: 70

перестали работать скрипты на странице. Lu8GY. перестали работать скрипты на странице фото. перестали работать скрипты на странице-Lu8GY. картинка перестали работать скрипты на странице. картинка Lu8GY. Зарегистрирован: 2012-05-20 Сообщений: 70

перестали работать скрипты на странице. photo. перестали работать скрипты на странице фото. перестали работать скрипты на странице-photo. картинка перестали работать скрипты на странице. картинка photo. Зарегистрирован: 2012-05-20 Сообщений: 70

перестали работать скрипты на странице. ftZZk. перестали работать скрипты на странице фото. перестали работать скрипты на странице-ftZZk. картинка перестали работать скрипты на странице. картинка ftZZk. Зарегистрирован: 2012-05-20 Сообщений: 70

2 ответа 2

1) и скрипты загружаются в header используйте такое решение

2) и скрипты загружаются в footer, используйте такое решение

перестали работать скрипты на странице. photo. перестали работать скрипты на странице фото. перестали работать скрипты на странице-photo. картинка перестали работать скрипты на странице. картинка photo. Зарегистрирован: 2012-05-20 Сообщений: 70

По умолчанию, jQuery в WordPress запускается в compatibility mode.

перестали работать скрипты на странице. photo. перестали работать скрипты на странице фото. перестали работать скрипты на странице-photo. картинка перестали работать скрипты на странице. картинка photo. Зарегистрирован: 2012-05-20 Сообщений: 70

Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript wordpress или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.1.40358

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Погружение в темные воды загрузки скриптов

Введение

В этой статье я хочу научить вас как загружать в браузер JavaScript и выполнять его.

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

Для затравки, вот как спецификация определяет различные способы загрузки и выполнения скриптов:

перестали работать скрипты на странице. image loader. перестали работать скрипты на странице фото. перестали работать скрипты на странице-image loader. картинка перестали работать скрипты на странице. картинка image loader. Зарегистрирован: 2012-05-20 Сообщений: 70

Как и все спецификации WHATWG, на первый взгляд данная спецификация выглядит как последствия кассетной бомбы на фабрике Scrabble. Но, прочитав ее на 5 раз и вытерев кровь из своих глаз, начинаешь находить ее довольно интересной:

Мое первое подключение скрипта

Ах, блаженная простота. В данном случае браузер скачает оба скрипта параллельно и выполнит их как можно скорее, сохраняя заданный порядок. «2.js» не будет выполняться пока не выполнится «1.js» (или не сможет этого сделать), «1.js» не выполнится пока не выполнится предыдущий скрипт или стиль, и т.д. и т.п.

Вот почему гуру и специалисты производительности советуют размещать элементы script в конце документа, потому что это блокирует меньше всего контента. К сожалению, это означает, что ваш скрипт не будет увиден браузером до того времени, как будет скачен весь HTML, а также уже запущена загрузка CSS, картинок и iframe-ов. Современные браузеры достаточно умны, чтобы отдавать приоритет JavaScript над визуальной частью, но мы можем сделать лучше.

Спасибо, IE! (нет, я это без сарказма)

WHATWG сделали это поведение явным, объявив, что «defer» не будет иметь никакого эффекта на скрипты, которые были добавлены динамически или не имеют «src». В противном случае, скрипты с «defer» должны запускаться в заданном порядке после того, как документ был распарсен.

Спасибо, IE! (ну ладно, теперь с сарказмом)

Одно дали — другое отобрали. К сожалению, есть неприятный баг в IE4-9, который может спровоцировать выполнение скриптов в неверном порядке. Вот что происходит:

Допустим, что на странице есть параграф, ожидаемый порядок логов — [1, 2, 3], но в IE9 и ниже результат будет [1, 3, 2]. Некоторые операции DOM вынуждают IE приостановить выполнение текущего скрипта и перед продолжением начать выполнение других скриптов в очереди.

HTML5 спешит на помощь

HTML5 дал нам новый атрибут «async», который предполагает, что вы также не используете document.write, но при этом не ожидает окончания парсинга документа. Браузер параллельно скачает оба скрипта и выполнит их как можно скорее.

К сожалению, так как они постараются выполниться максимально скоро, «2.js» может выполниться раньше «1.js». Это отлично, если они не зависят друг от друга. Например, если «1.js» — это отслеживающий скрипт, не имеющий ничего общего с «2.js». Но если «1.js» — это CDN-копия jQuery, от которой зависит «2.js», то ваша страница будет устлана ошибками, как после кассетной бомбы в… я не знаю… здесь я ничего не придумал.

Я знаю, нам нужна JavaScript-библиотека!

В Святом Граале содержится набор скриптов, загружающихся сразу, без блокирования отрисовки страницы и выполняющихся максимально скоро, в том порядке, в котором мы их добавили. К сожалению, HTML ненавидит вас и не позволит вам этого сделать.

Проблема была решена с помощью JavaScript на разный манер. Некоторые способы требовали от вас вносить изменения в JavaScript, оборачивать всё в callback, который библиотека вызовет в правильном порядке (например, RequireJS). Другие использовали XHR для параллельной загрузки, а затем eval() в нужном порядке, который не работает для скриптов на другом домене, если там нет заголовка CORS и поддержки его в браузере. Некоторые использовали даже супер-магические хаки, как это было сделано в последнем LabJS.

Хаки всяческим образом обманывали браузер, чтобы тот загружал ресурс, вызывая при этом событие по окончанию загрузки, но не начинал его выполнение. В LabJS скрипт сначала добавлялся с некорректным mime-типом, например
Скрипты, которые созданы и добавлены динамически, асинхронные по-умолчанию, они не блокируют отрисовку и выполняются сразу после загрузки, что означает, что они могут появиться в неверном порядке. Однако мы можем явно пометить их неасинхронными:

Это даст нашим скриптам сочетание с поведением, которое не может быть достигнуто чистым HTML. Явно заданные неасинхронными, скрипты добавляются в очередь на выполнение, такую же, как они попадали в нашем первом примере на чистом HTML. Однако, создаваемые динамически, они будут выполняться вне парсинга документа, что не будет блокировать отрисовку, пока они будут загружаться (не путайте неасинхронную загрузку скрипта с синхронным XHR, что никогда не является хорошей вещью).

Скрипт выше должен быть встроен в head страниц, начиная очередь загрузок как можно раньше, без нарушения постепенной отрисовки, и начиная выполнять как можно раньше, в заданном вами порядке. «2.js» может свободно загружаться до «1.js», но он не будет выполнен до тех пор, пока «1.js» успешно не скачается и выполнится или не сможет сделать что-либо из этого. Ура! Асинхронная загрузка, но выполнение по порядку!

Загрузка скриптов этим методом поддерживается везде, где поддерживается атрибут async, за исключением Safari 5.0 (на 5.1 все хорошо). Кроме того все версии Firefox и Opera, которые не поддерживают атрибут async, все равно выполняют динамически-добавленные скрипты в правильном порядке.

Это самый быстрый способ загружать скрипты, так? Так?

Ну если вы динамически решаете какие скрипты загружать — да, иначе — возможно, что нет. В примере выше браузер должен распарсить и загрузить скрипт, чтобы определить какие скрипты загружать. Это скрывает ваши скрипты от сканеров предзагрузки. Браузеры используют эти сканеры для обнаружения ресурсов, которые вы скорее всего посетите следующими и для обнаружения ресурсов страницы пока парсер заблокирован другим ресурсом.

Мы можем добавить обнаружаемость обратно, поместив это в head документа:

Эта статья меня удручает

Ситуация удручающая и вы должны чувствовать себя удрученным. Еще нет декларативного способа без повторений для загрузки скриптов быстро и асинхронно, в то же время управляя порядком выполнения.

С появлением HTTP2/SPDY вы сможете уменьшить накладные ресурсы до точки, где доставка скриптов в маленьких самостоятельно-кэшированных файлах будет самым быстрым способом. Только представьте:

Каждый enhancement-скрипт имеет дело с конкретным компонентом страницы, но требует вспомогательные функции в dependencies.js. В идеале, мы хотим загрузить все асинхронно, затем выполнить enhancement-скрипт как можно раньше, в любом порядке, но после dependencies.js. Это прогрессивное прогрессивное улучшение!

К сожалению, нет декларативного способа для того, чтобы достичь этого, только если модифицировать сами скрипты для отслеживания состояния загрузки dependencies.js. Даже async=false не решит эту проблему, потому что выполнение enhancement-10.js будет заблокировано на 1-9. По факту, есть только один браузер, в котором можно достичь этого без хаков…

У IE есть идея!

IE грузит скрипты не так, как другие браузеры.

IE начинает закачивать «whatever.js» сейчас, другие же браузеры не начнут загрузку до того момента, пока скрипт не будет добавлен к документу. У IE также есть событие «readystatechange» и свойство «readystate», которые сообщают о процессе загрузки. Это на самом деле очень полезно, потому что позволяет нам управлять загрузкой и выполнением скриптов независимо друг от друга.

Хватит! Как я должен загружать скрипты?

Ладно, ладно. Если вы хотите загружать скрипты способом, который не блокирует отрисовку, не требует дублирования и имеет прекрасную поддержку браузеров, то я советую вот этот:

Именно этот. В конце элемента body. Да, быть веб-разработчиком — это как быть царем Сизифом (бум! 100 хипстерских очков за упоминание греческой мифологии!). Ограничения HTML и браузеров не позволяют нам сделать сильно лучше.

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

Иуу, должно быть что-то получше, что мы можем использовать сейчас?

Ладно, ради бонусных очков, если вы всерьез думаете о производительности и не боитесь сложности и дублирования, то можете объединить несколько рассмотренных трюков.

Во-первых, мы добавим объявление subresource для предзагрузчиков:

Спецификация говорит: Скачивай вместе, выполняй по порядку после любого ожидающего CSS, блокируй отрисовку, пока не закончишь
Браузер отвечает: Да, сэр!

Defer

Спецификация говорит: Скачивай вместе, выполняй по порядку до DOMContentLoaded. Игнорируй «defer» для скриптов без «src».
IE

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *