Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Порядок выполнения скриптов на странице (https://javascript.ru/forum/misc/3052-poryadok-vypolneniya-skriptov-na-stranice.html)

kefi 13.03.2009 14:38

Порядок выполнения скриптов на странице
 
Может кто-нибудь объяснить, или дать хорошую ссылку на объяснение :

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

Kolyaj 13.03.2009 14:45

Сверху вниз.

kefi 13.03.2009 14:48

2 Kolyaj > Очень понятно, особенно в контексте динамической подгрузки скриптов ... Прочтите, плз, еще раз поправленный мной первый пост

Kolyaj 13.03.2009 14:52

По порядку. Вы чего вообще услышать хотите? Как браузер встретит скрипт, так его и выполнит. Если у вас какой-то специфический случай, так протестируйте. Создайте 10 файлов с alert(1, 2, ..., 10).

kefi 13.03.2009 15:21

2 Kolyaj> Что хочу услышать , я указал в первом посте. Как браузер "встретит скрипт" - непонятно, я и хотел понять - как он "встретит", хотя слово "встретит" здесь не очень подходит.
Каждый случай можно объявить специфическим, я же хочу понять общую схему обработки динамически подгружающихся скриптов с перекрывающимися именами. Ваши слова пока никак не коснулись поставленных мной вопросов, но если Вы еще их не поняли, то лучше не отвечайте вовсе.

Gvozd 13.03.2009 15:33

Цитата:

Сообщение от kefi
подгружающихся скриптов с перекрывающимися именами

начнем с того что вы понимаете под именем скрипта?
имя файла?чем ответ Kolyaj меняется от этого факта?
имя глобыльных переменных?
они будут использоватся как глобальные переменные.
что вы хотите услышать?

Zibba 13.03.2009 15:34

Очерёдность событий и синхронизация в JavaScript

kefi 13.03.2009 15:52

[quote=Gvozd;14196]начнем с того что вы понимаете под именем скрипта? /QUOTE]
Во-первых, я нигде не говорил об имени скрипта, чтобы конкретизировать я говорил об именах переменных и функций. Но раз уж Вы упомянули, то - и имя скрипта тоже.

Например, в HEAD определены :
<SCRIPT type="text/javascript" src="global/hello.js"></SCRIPT>
<SCRIPT type="text/javascript" src="global/hello.js"></SCRIPT> - Загрузится повторно или нет ?
<SCRIPT type="text/javascript" src="/My1.js"></SCRIPT> - Если он содержит функции с теми же именами , что и в выше загруженных скриптах , то какие будут выполняться в действительности или вообще будет ошибка ? То же насчет глобальных переменных - ?

Дальше в BODY определены :
<SCRIPT type="text/javascript" src="/My2.js"></SCRIPT>

Дальше в eval выполняется еще скрипты с теми же именами переменных, что уже загружены на странице - как будет производится разрешение имен ?

Может ли быть ситуация когда скритпы уже загружены(например в HEAD) , но элементы страницы , которые они обрабатывают(например элементы в BODY), еще нет ? Как в этой ситуации разобраться ?

И еще можно поставить кучу вопросов, только все они умещаются в стартовом посте этой темы и ни к чему приводить конкретные примеры, когда нужна ОБЩАЯ схема решения .

Gvozd 13.03.2009 16:03

Цитата:

Сообщение от kefi
Загрузится повторно или нет ?

а вы-то как думаете?
конечно загрузится.вопрос только откуда он будет грузится:с сервера по новой, или из кеша браузера.на этот вопрос уже нету тоднозначного ответа.зависит от того, как вы настроили кеширование на сервере и от браузера
Цитата:

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

по моему и тут ответ более чем очевиден
что по вашему сделает код:
a=100;
a=200;

переопределит пременную
глобальные функции и глобальные пременные переопределятся, независимо от того, где это было сделано.
советую вам проситать статью о областях видимости

Цитата:

Сообщение от kefi
Дальше в eval выполняется еще скрипты с теми же именами переменных, что уже загружены на странице - как будет производится разрешение имен ?

насколько я помню это зависит от браузера.
если не ошибаюсь осел ведет себя не как все остальные.
напишите небольшой тест, и проверьте

Цитата:

Сообщение от kefi
Может ли быть ситуация когда скритпы уже загружены(например в HEAD) , но элементы страницы , которые они обрабатывают(например элементы в BODY), еще нет ? Как в этой ситуации разобраться ?

может.
более того это одна из самых распрастраненых ошибок новичков.
сделать можно несколько вещей:
1)расположить скрипт не в теге head, а после элементов с которыми он работает
2)обернуть код в функцию, и выполнить его либо по событию window.onload, либо по таймауту

как видите ответы на почти все ваши вопросы вполне очевидны, если подумать немного.а если не уверены, то всегда можно проверить скриптом

AzriMan 13.03.2009 16:21

Цитата:

Сообщение от Gvozd (Сообщение 14202)
может.
более того это одна из самых распрастраненых ошибок новичков.
сделать можно несколько вещей:
1)расположить скрипт не в теге head, а после элементов с которыми он работает
2)обернуть код в функцию, и выполнить его либо по событию window.onload, либо по таймауту

а если воспользоваться этим советом? http://javascript.ru/optimize/perfor...ules#js_bottom

p.s. добавлю от себя. у меня страница загружается как есть. после этого выполняется ф-я, повешенная на событие onLoad, которая уже изменяет страницу как надо (это при условии если эти изменения нельзя совершить в процессе загрузки). на крайний случай (что бы пользователю не был виден процесс "изменений") я нужней элемент оборачиваю скрытым дивом, изменяю, и делаю его видимым. или, еще на крайний случай, вставляю слово "Загрузка", изменяю нужный элемент, "Загрузку" удаляю и делаю тот блок видимым :)


Часовой пояс GMT +3, время: 16:23.