Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
Maksim

Динамическое подключения файлов со скриптами?

12.03.2008, 21:34. Показов 5675. Ответов 25
Метки нет (Все метки)

Короче, для ускорения загрузки страниц, делаю следующее:

<script id=scr1></script>
<script>
function LoadScript(){
if (scr1.src.length==0) scr1.src='my_script.js'
setTimeout(MyMethod());
}
</script>
<input type=button onclick='LoadScript()' value='Exec MyMethod()'>

Функция MyMethod() находится в файле my_script.js...
При открытии страницы файл не загружается, а загружается только после нажатия на кнопку...
Возможно в зависимости от версий браузера подгружать разные файлы, при отсутствии необходимости выполнять скрипт не загружать вообще. В общем, идея думаю понятна.

Тестирую, вроде работает.

Но при работе большого приложения, где используются множественные операции с использованием setTimeout(), иногда, (заостряю внимание, ИНОГДА, не всегда), происходят сбои... При вызове метода файл видимо еще не загружен. Вызываемой функции еще не существует...

Может кто знает, как бороться с этим?
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2008, 21:34
Ответы с готовыми решениями:

Ошибка подключения файлов
Помогите разобраться в ошибках Warning: include_once(..init.inc.php) : failed to open stream: No such file or directory in...

Система подключения файлов
Вот придумываю как будут подключатся файлы в одном проекте . Идея простая : &lt;?php if (!isset($_GET) ||...

Порядок подключения файлов
Приветствую, браты! Народ, такая проблема, не могу решить: Есть фаил 1 и в нём вывод переменной, объявление этой переменной в файле 2,...

25
Maksim
17.03.2008, 12:22
А можно еще поставить проверку, загружен ли в конечном скрипт или нет.
Что-то вроде:

function openIt(){
if (typeof(openCalendar)=='function') openCalendar(obj);
else
if (scr1.src.length != 0) alert('Script can not be loaded!');
}

И как думаешь, разумно в данном случае использовать событие
onreadystatechange?
'Fires when the state of the object has changed'
Что в данном случае следует понимать под 'the state of the object'?
Maksim
17.03.2008, 12:48
А с setTimout, и тем более счетчиками при этом, мне идея почему-то жутко не нравится....

Было бы идеально, если бы можно было обработать событие onload для скрипта.
Но не работает...
Почему? Нет никаких мыслей?
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
17.03.2008, 18:12
По поводу SCRIPT ONLOAD, если посмотреть на спецификации HTML 4.01 и в частности тега <SCRIPT>, то выяснится что атрибута такого нет у тега.

http://web3.w3.org/TR/html4/interact/scripts.html

Вероятно, он присутствует только в IE и то судя по примеру в MSDN поведение у него мягко говоря не такое, как ожидается. Видимо там имеется ввиду все таки EVENT=ONLOAD, а в документацию по тегу SCRIPT он случайно попал или по ошибке.
0
Maksim
17.03.2008, 18:32
По поводу EVENT='...' ты все-таки путаешь...
Любой Event можно присвоить таким образом.
Для любого события есть три способа присвоения:

Inline HTML : <TAG onclick='...'>
Scripting : object.onclick = ...
ну и этот самый способ:
Named script: <SCRIPT FOR = object EVENT = onclick>

Посмотри в MSDN любое событие. Onload в данном случае ничем не отличается от других...

А то что он не работает, скорее какой-то глюк.

А по поводу 'onreadystatechange', как думаешь, разумно использовать?
Maksim
17.03.2008, 19:26
<html>
<script>
function openIt(){
if (typeof(openCalendar)=='function') openCalendar(obj);
else
if (scr1.src.length != 0) alert('Script can not be loaded!');
}
</script>
<script id=scr1 onreadystatechange='openIt()'>
</script>
<body leftMargin=200>
<input id=obj type=text>
<input type=button onclick='if (scr1.src.length==0) scr1.src='http://max.far.ru/calendar.js' else openIt();' value='...'></DIV>
</body>
</html>
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
18.03.2008, 11:23
Я знаю, что можно любое событие повесить на EVENT, именно поэтому и говорю, что в MSDN этот атрибут для SCRIPT попал по ошибке.

Что касается onreadystatechange, то думаю что вполне допустимо использовать раз работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2008, 11:23

Ошибка подключения .h файлов
Приветствую, у меня есть такая проблема: программа использует объекты двух различных классов Para и QuantumRoute. para.h: ...

особенности подключения файлов
Доброго времени суток, уважаемые форумчане! Есть несколько классов, например class1.php, class2.php, и скрипт constructor.php, в...

Динамическое создание файлов.
Очень нужен пример такой на С/С++ (поф,ибо у меня DEV-C++).Кто поможет ?:( ЗЫ: Вылетает Unhandled Win32 exception =_= в моем примере

Подключения файлов с другим расширением
Доброго времени суток всем. Подскажите плиз кто нить, возможно ли подключить в файл рнр, файл не рнр, не html, а скажем vbs , на...

Ошибки подключения файлов и БД mysql
Здравствуйте! Вот регистрация: db.phpp &lt;?php $db = mysql_connect (&quot;*********&quot;,&quot;**********&quot;,&quot;*******&quot;); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru