Страница 1 из 1
Динамическая подгрузка библиотек функций на JavaScript
Добавлено: 28 ноя 2005, 11:13
Zroman
Здравствуйте.
На ХТМЛ-странице есть <select> Нужно, чтобы в зависимости от выбранного значения селекта подгружался определённый js-файл.Подгружать сразу все на все случаи жизни слишком долго. Таких файлов более десятка и каждый от 10КБ до 50КБ весом.
Добавлено: 28 ноя 2005, 12:48
Duncon
Придется перегружать страницу каждый раз на другую, поскольку при загрузке страницы считываются все js-файлы и загружаются в темп и уже от туда читаются..
Добавлено: 28 ноя 2005, 18:48
Oscar
Если это серверное приложение (js-файлы лежат на сервере), то Duncon прав.
Другое дело, что эти самые файлы закэшируются с первого раза!
То есть пользователю прийдётся всего лишь один раз забрать эти (максимум) 500 Кб.
Если же файлы уже лежат у клиента на компьютере и не хочется загружать их все разом - тогда можно подумать.
Вопрос по теме к знающим людям:
JS-файлы сразу все загружаются в оперативную память, или по мере использования?
Добавлено: 29 ноя 2005, 11:56
Duncon
По любому до, если еще подумать и вспомнить структуру вначале шапка грузится потом js потом тело документа
Добавлено: 29 ноя 2005, 20:16
Zroman
Спасибо за разъяснения. по подключению js-файлов.
А можно как-то делать так, чтобы динамически генерируемые фукции, влючённые динамически в innerHTML какого-нибудь элемента страницы, воспринимались Эксплорером? А то Опера видит эти функции после вставки, а MSIE 6.0 нет
Добавлено: 29 ноя 2005, 22:17
Duncon
Я не очень понял (можно на пальцах) че значит - динамически генерируемые фукции -
Добавлено: 29 ноя 2005, 22:51
Oscar
Код: Выделить всё
<!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 тоже без проблем понимает,
но что делать ... жизнь такая ...
Вот только я не понимаю, зачем тебе вообще это?
Добавлено: 29 ноя 2005, 23:34
Oscar
Код: Выделить всё
<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>
FF+IE
Да прибудет с вами Google :lol:
Добавлено: 30 ноя 2005, 00:14
Oscar
"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>
;-)
Добавлено: 30 ноя 2005, 01:58
Zroman
Oscar спасибо.
Мне это нужно, чтобы сделать выпадающее многоуровневое меню, в которм на каждый пункт должна быть своя функция. Пунктов в менюдолжно быть хотя бы 100, но с тем, что ты дал, можно сделать бесконечно много пунктов.