Динамическая подгрузка библиотек функций на JavaScript

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Zroman
Сообщения: 75
Зарегистрирован: 20 апр 2005, 19:23
Откуда: Киев

Здравствуйте.
На ХТМЛ-странице есть <select> Нужно, чтобы в зависимости от выбранного значения селекта подгружался определённый js-файл.Подгружать сразу все на все случаи жизни слишком долго. Таких файлов более десятка и каждый от 10КБ до 50КБ весом.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Придется перегружать страницу каждый раз на другую, поскольку при загрузке страницы считываются все js-файлы и загружаются в темп и уже от туда читаются..
[syntax=Delphi] [/syntax]
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Если это серверное приложение (js-файлы лежат на сервере), то Duncon прав.
Другое дело, что эти самые файлы закэшируются с первого раза!
То есть пользователю прийдётся всего лишь один раз забрать эти (максимум) 500 Кб.

Если же файлы уже лежат у клиента на компьютере и не хочется загружать их все разом - тогда можно подумать.

Вопрос по теме к знающим людям:
JS-файлы сразу все загружаются в оперативную память, или по мере использования?
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

По любому до, если еще подумать и вспомнить структуру вначале шапка грузится потом js потом тело документа
[syntax=Delphi] [/syntax]
Zroman
Сообщения: 75
Зарегистрирован: 20 апр 2005, 19:23
Откуда: Киев

Спасибо за разъяснения. по подключению js-файлов.
А можно как-то делать так, чтобы динамически генерируемые фукции, влючённые динамически в innerHTML какого-нибудь элемента страницы, воспринимались Эксплорером? А то Опера видит эти функции после вставки, а MSIE 6.0 нет
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Я не очень понял (можно на пальцах) че значит - динамически генерируемые фукции -
[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>
FF+IE
Да прибудет с вами 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>
;-)
Zroman
Сообщения: 75
Зарегистрирован: 20 апр 2005, 19:23
Откуда: Киев

Oscar спасибо.
Мне это нужно, чтобы сделать выпадающее многоуровневое меню, в которм на каждый пункт должна быть своя функция. Пунктов в менюдолжно быть хотя бы 100, но с тем, что ты дал, можно сделать бесконечно много пунктов.
Ответить