Порядок выполнения скриптов на странице
Может кто-нибудь объяснить, или дать хорошую ссылку на объяснение :
Интересует порядок подгрузки и выполнения скриптов на странице с учетом возможного перекрытия во время подгрузки имен переменных и функций , а также желательно с учетом возможных динамически подгружаемых скриптов , если такое вообще возможно ... - общая такая ,понятная такая ,всеохватная такая схема без лишнего словоблудия ? |
Сверху вниз.
|
2 Kolyaj > Очень понятно, особенно в контексте динамической подгрузки скриптов ... Прочтите, плз, еще раз поправленный мной первый пост
|
По порядку. Вы чего вообще услышать хотите? Как браузер встретит скрипт, так его и выполнит. Если у вас какой-то специфический случай, так протестируйте. Создайте 10 файлов с alert(1, 2, ..., 10).
|
2 Kolyaj> Что хочу услышать , я указал в первом посте. Как браузер "встретит скрипт" - непонятно, я и хотел понять - как он "встретит", хотя слово "встретит" здесь не очень подходит.
Каждый случай можно объявить специфическим, я же хочу понять общую схему обработки динамически подгружающихся скриптов с перекрывающимися именами. Ваши слова пока никак не коснулись поставленных мной вопросов, но если Вы еще их не поняли, то лучше не отвечайте вовсе. |
Цитата:
имя файла?чем ответ Kolyaj меняется от этого факта? имя глобыльных переменных? они будут использоватся как глобальные переменные. что вы хотите услышать? |
|
[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), еще нет ? Как в этой ситуации разобраться ? И еще можно поставить кучу вопросов, только все они умещаются в стартовом посте этой темы и ни к чему приводить конкретные примеры, когда нужна ОБЩАЯ схема решения . |
Цитата:
конечно загрузится.вопрос только откуда он будет грузится:с сервера по новой, или из кеша браузера.на этот вопрос уже нету тоднозначного ответа.зависит от того, как вы настроили кеширование на сервере и от браузера Цитата:
что по вашему сделает код: a=100; a=200; переопределит пременную глобальные функции и глобальные пременные переопределятся, независимо от того, где это было сделано. советую вам проситать статью о областях видимости Цитата:
если не ошибаюсь осел ведет себя не как все остальные. напишите небольшой тест, и проверьте Цитата:
более того это одна из самых распрастраненых ошибок новичков. сделать можно несколько вещей: 1)расположить скрипт не в теге head, а после элементов с которыми он работает 2)обернуть код в функцию, и выполнить его либо по событию window.onload, либо по таймауту как видите ответы на почти все ваши вопросы вполне очевидны, если подумать немного.а если не уверены, то всегда можно проверить скриптом |
Цитата:
p.s. добавлю от себя. у меня страница загружается как есть. после этого выполняется ф-я, повешенная на событие onLoad, которая уже изменяет страницу как надо (это при условии если эти изменения нельзя совершить в процессе загрузки). на крайний случай (что бы пользователю не был виден процесс "изменений") я нужней элемент оборачиваю скрытым дивом, изменяю, и делаю его видимым. или, еще на крайний случай, вставляю слово "Загрузка", изменяю нужный элемент, "Загрузку" удаляю и делаю тот блок видимым :) |
Часовой пояс GMT +3, время: 16:23. |