webew
Войти » Регистрация
 
JavaScript

include в js

29 сентября 2008, 22:26
Автор: Serg_pnz
Как?
Хочу внести все настраиваемые параметры в отдельный файл, а потом их по мере надобности использовать в других функциях.
Добавить комментарий
Отображение комментариев: Древовидное | Плоское

bur

Встроенных методов для инклюда в яваскрипте нет. Но это можно обойти, воспользовавшись возможностью создания DOM-узлов с именем script. Принцип такой:

function include(src) {
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src = src;
    document.getElementsByTagName('head')[0].appendChild(script);
}


Это грубый непроверенный пример, который я написал прям тут. Необходимо либо довести его до ума, проверив во всех браузерах, либо поискать что-то готовое: http://www.phpied.com/javascript-include/
29.09.2008, 23:18
Ответить

Serg_pnz

bur, пожалуйста с примером, что куда писать? Горю - нужно апдейт выпускать, а меня сие здорово тормозит...
30.09.2008, 00:13
Ответить

Serg_pnz

Кстати в mootools это уже вшито
new Asset.javascript('template/themanor/config.js');

и оно даже выполняет скрипт, но как мне передать значение из config.js в то место, откуда вызываем эту строку?
30.09.2008, 00:30
Ответить

bur

Последние 2 коммента я что-то не понял. Смотри, есть у тебя config.js со всякими параметрами:

var conf = {}; // Namespace
var conf.interval = 1000;
var conf.history = [
     "First note",
     "Second note"
];


Подключаешь его (дай хоть и с помощью мутулз) и юзаешь параметры, как обычные глобальные переменные:

new Asset.javascript('template/themanor/config.js');
alert(conf.interval);


В чем вопрос-то?
30.09.2008, 00:47
Ответить

Serg_pnz

Инклюдю попроще код - всего одну строку.
var test = '12313';

Так в алерте пишет что неопределено значение переменной test
30.09.2008, 01:07
Ответить

bur

Где выполняется сценарий: в отдельном js-файле или на странице?
30.09.2008, 01:48
Ответить

Serg_pnz

Оба кода в отдельных файлах, каждый в своём.
30.09.2008, 08:24
Ответить

bur

Можешь выложить пример своего скрипта, в котором используется инклуд?
30.09.2008, 11:55
Ответить

Serg_pnz

http://www.ponedelnikov.net/index.php?name=Files&op=view_file&lid=166

Например в функцию function getWindowSizeChat(flag) надо закинуть кое-какие параметры, например цифры, для вычисления высоты, а то темы неудобно настраивать.
А config.js должен лежать в папке с темой.
30.09.2008, 13:11
Ответить

Serg_pnz

Решил сделать через скрытую форму, положив в value параметры, а потом делаю getValue и парсю массив, получая данные.

Но если решение найдется (на будущее) - это было бы здорово!
30.09.2008, 17:16
Ответить
NO USERPIC

rgbeast

туда кстати можно и ip-шник положить, для соседней темы
30.09.2008, 17:22
Ответить

bur

Пока простого кроссбраузерного решения я не нашел. Вижу 2 пути:

1) Динамическая генерация тега SCRIPT. Этот подход уже описан в комментариях выше. Его минусом является то, что заинклюденый файл интерпретируется ПОСЛЕ кода исполняемого в данный момент. То есть вот так код работать НЕ будет:

<script type="text/javascript">
function include(src) {
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src = src;
    document.getElementsByTagName('head')[0].appendChild(script);
}
include('config.js');
alert('Параметр из конфига: ' + param);
</script>


а вот так будет:

<script type="text/javascript">
function include(src) {
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src = src;
    document.getElementsByTagName('head')[0].appendChild(script);
}
include('config.js');
</script>
<script type="text/javascript">
alert('Параметр из конфига: ' + param);
</script>


2) Можно загружать JS-файл по AJAX-у, затем эвалить и пролоджить работу из callback-функции.

----------

Оба подхода имеют ограничения, неудобны и сводят пользу от инклуда на нет.
Возможно удастся найти или придумать более удачный способ...
02.10.2008, 13:23
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2024 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: