Динамическая подгрузка библиотек функций на JavaScript
Модератор: Duncon
Здравствуйте.
На ХТМЛ-странице есть <select> Нужно, чтобы в зависимости от выбранного значения селекта подгружался определённый js-файл.Подгружать сразу все на все случаи жизни слишком долго. Таких файлов более десятка и каждый от 10КБ до 50КБ весом.
На ХТМЛ-странице есть <select> Нужно, чтобы в зависимости от выбранного значения селекта подгружался определённый js-файл.Подгружать сразу все на все случаи жизни слишком долго. Таких файлов более десятка и каждый от 10КБ до 50КБ весом.
Придется перегружать страницу каждый раз на другую, поскольку при загрузке страницы считываются все js-файлы и загружаются в темп и уже от туда читаются..
[syntax=Delphi] [/syntax]
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Если это серверное приложение (js-файлы лежат на сервере), то Duncon прав.
Другое дело, что эти самые файлы закэшируются с первого раза!
То есть пользователю прийдётся всего лишь один раз забрать эти (максимум) 500 Кб.
Если же файлы уже лежат у клиента на компьютере и не хочется загружать их все разом - тогда можно подумать.
Вопрос по теме к знающим людям:
JS-файлы сразу все загружаются в оперативную память, или по мере использования?
Другое дело, что эти самые файлы закэшируются с первого раза!
То есть пользователю прийдётся всего лишь один раз забрать эти (максимум) 500 Кб.
Если же файлы уже лежат у клиента на компьютере и не хочется загружать их все разом - тогда можно подумать.
Вопрос по теме к знающим людям:
JS-файлы сразу все загружаются в оперативную память, или по мере использования?
По любому до, если еще подумать и вспомнить структуру вначале шапка грузится потом js потом тело документа
[syntax=Delphi] [/syntax]
Спасибо за разъяснения. по подключению js-файлов.
А можно как-то делать так, чтобы динамически генерируемые фукции, влючённые динамически в innerHTML какого-нибудь элемента страницы, воспринимались Эксплорером? А то Опера видит эти функции после вставки, а MSIE 6.0 нет
А можно как-то делать так, чтобы динамически генерируемые фукции, влючённые динамически в innerHTML какого-нибудь элемента страницы, воспринимались Эксплорером? А то Опера видит эти функции после вставки, а MSIE 6.0 нет
Я не очень понял (можно на пальцах) че значит - динамически генерируемые фукции -
[syntax=Delphi] [/syntax]
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Код: Выделить всё
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>addJS</title>
<script type="text/javascript">
function addJS() {
var js = document.createElement("script");
js.innerHTML = "alert('hi');"
document.body.appendChild(js);
}
</script>
</head>
<body onLoad="addJS();">
<div>This Page Is Valid HTML 4.01 Strict!</div>
</body>
</html>
Zroman,
FF тоже без проблем понимает,
но что делать ... жизнь такая ...
Вот только я не понимаю, зачем тебе вообще это?
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Код: Выделить всё
<html>
<head>
<script type="text/javascript">
function addJS() {
var o = document.createElement('script');
o.setAttribute('src', 'test.js');
document.body.appendChild(o);
}
</script>
</head>
<body>
<p onClick="addJS()">test</p>
</body>
</html>
Да прибудет с вами Google :lol:
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
"What's really going to bake your noodle later on is, would you still have broken it if I hadn't said anything." (c) Matrix
;-)
Код: Выделить всё
<html>
<head>
<title>test</title>
<style type="text/css">
p { cursor: pointer}
</style>
<script type="text/javascript">
function addJS(jsFile) {
var o = document.createElement('script');
o.setAttribute('src', jsFile+'.js');
o.setAttribute('id', jsFile);
document.body.appendChild(o);
}
function removeJS(jsID) {
var o = document.getElementById(jsID);
if (o != null)
document.body.removeChild(o);
}
</script>
</head>
<body>
<p onClick="addJS('f1');">add</p>
<p onClick="f1()">test</p>
<p onClick="removeJS('f1')">remove</p>
<p onClick="f1()">test</p>
</html>
Oscar спасибо.
Мне это нужно, чтобы сделать выпадающее многоуровневое меню, в которм на каждый пункт должна быть своя функция. Пунктов в менюдолжно быть хотя бы 100, но с тем, что ты дал, можно сделать бесконечно много пунктов.
Мне это нужно, чтобы сделать выпадающее многоуровневое меню, в которм на каждый пункт должна быть своя функция. Пунктов в менюдолжно быть хотя бы 100, но с тем, что ты дал, можно сделать бесконечно много пунктов.