Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > include script.js?


Автор: GoodBoy 2.2.2005, 13:38
Мне нужно внутри одного файла скрипта подключить другой файл? Как это сделать? Причем нужно, чтобы отработало в любом браузере...

Автор: Aliance 2.2.2005, 15:36
Используя innerHTML вводишь туда некую переменную, к которую помещаешь сам <скрипт> и т.д... Только закрывающий тег нужно разбить на 2 части, чтобы сценарий не принял его как конец сценария...
Если я тебя правельно понял

Автор: sergejzr 2.2.2005, 15:56
document.write('<script language="javascript" src="myscript.js"></script>');
Только он будет параллельно грузится и исполнятся.

Автор: Farik 2.2.2005, 16:10
если на сервере стоит SSI, то настаиваешь его на обработку файлов с расширением .js(если подключать надо в подключаемом файле 8) ), если не надо, то просто вписывай по ходу js кода
<!-- #include ТипПути = ИмяФайла -->, js код будет вставлен ещё на сервере и не будет отличаться от кода, физически вставленного в первый скрипт.

Автор: GoodBoy 2.2.2005, 18:25
всё не то....

есть файл script.js с каким-то набором неважно чего...
и мне нужно в нем проинклюдить файл var.js, который будет генериться отдельно....
в том файле будут переменные, которые используются в первом...

Автор: Farik 2.2.2005, 18:51
Он где генериться будет?
На сервере или в браузере?
Собственно слабо себе представляю как можно сгенерить файл со скриптом на машине пользователя, посему предпологаю, что на сервере.
Если он генерится на сервере, то любой из серверных инлудов позволит вставить сам код, то есть в итоге получится один скрипт, то есть переменные будут общими.
Если модель такая - скачивается первый скрипт, отрабатывается пользователем, запускает генерацию нового скрипта на сервере, то подойдёт вариант sergej.z...
Как бы вроде так.

Автор: sergejzr 2.2.2005, 19:16
GoodBoy, ничего не понимаю.
Разве ты не так хочешь?
Вот линк на готовый пример.
http://files.vingrad.ru/sergej.z/js/incl/test.html

Наш инклуд
Код

//BEGIN var.js
var t="Мама мыла раму";
function test()
{
alert("Привет из var.js\n"+t);
}
//END var.js

Откуда инклудаем
Код

//BEGIN script.js
document.write('<script language="javascript" src="var.js"></script>');
function wait_for_var()
{
//Тут ждём, когда загрузится var.js
if(typeof(test)!="function")
{
 setTimeout("wait_for_var()",100);
 return;
}

 test();
 alert("Привет из главного файла "+t);
}

function load_var()
{

wait_for_var();
}
//END script.js


HTML
Код

<html>
 <script language="javascript" src="./script.js"></script>
 <body>
   <input type="Button" onclick="load_var();" value="test">
 <body>
<html>

Автор: Sardar 2.2.2005, 23:56
sergej.z файл var.js подгрузился не при клике на кнопку, а в начале в месте со всей страницей.

Если для ИЕ/Мозилла only, то можно через:
Код

function loadJSFile(url) {
 var s=document.createElement("SCRIPT");
 s.setAttribute("type", "text/javascript");
 s.setAttribute("src", url);
 document.body.appendChild(s);
}

Опера проигнорирует.

Автор: sergejzr 3.2.2005, 00:00
Цитата(Sardar @ 2.2.2005, 22:56)
Опера проигнорирует.

Sardar, жаль.
А почему нельзя document.write() при нажатии на кнопку?


Добавлено @ 00:01
Вообще- то гудбой вроде так и имел ввиду. Или мне показалось.

Автор: Sardar 3.2.2005, 00:01
Можно, только в отдельном фрейме/окне, иначе убьём весь документ.

Автор: sergejzr 3.2.2005, 00:06
Понятно smile
можно iframe под это дело....
в опере вроде тоже должно пойти?...


Автор: Sardar 3.2.2005, 00:27
Всё отменяется, под Оперой 7 прекрасно работает пример с createElement, зря на неё бочку катил smile

Автор: GoodBoy 3.2.2005, 13:31
Sardar
А как быстро отработает твоя loadJSFile???

Вот к примеру:
vars.js
Код
var qwe = 'werqwer qwerqweqv';
var asd = 'dijfhisj isdhakshdg fa';
var zxc = 23452345;


script.js
Код
function loadJSFile(url) {
   var s=document.createElement("SCRIPT");
   s.setAttribute("type", "text/javascript");
   s.setAttribute("src", url);
   document.body.appendChild(s);
}

loadJSFile('vars.js');

alert(asd);


сработает???? успеет файл переменных подгрузиться если сразу после вызова функции загрузки будут какие-то действия с переменными из этого файла?

Автор: Sardar 3.2.2005, 14:13
Нет не успеет, ведь он подгружается асинхронно. Делаем своё событие onJSFileLoad перед подгрузкой останавливаем выполнение. Как только загрузилось, продолжили.

Автор: GoodBoy 3.2.2005, 14:19
Цитата(Sardar @ 3.2.2005, 14:13)
Нет не успеет, ведь он подгружается асинхронно

Хреново... :-(

Автор: Sardar 3.2.2005, 14:56
Дык в JS всё асинхронно, картинки, страницы, всё грузится паралельно. Для этого и таймеры особо сделанны и никаких глупых usleep() нет. В чём проблема?

Автор: GoodBoy 3.2.2005, 17:49
Цитата(Sardar @ 3.2.2005, 14:56)
В чём проблема?

Да не в чем! Просто заморачиваться с этим не хотел... Думал может способ проще есть...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)