подключение скриптов друг к другу ...
Возникла острая необходимость подключить внешний скрипт к текущему так, чтобы он имел доступ к переменным и функциям в другой функции текущего скрипта.
Собственно, рассуждая логически, внешний скрипт нужно загружать непосредственно внутри функции текущего скрипта - тоесть допустим имеем главный скрипт main.js
// здесь идет произвольный код
// далее некая сразу выполняющаяся функция
(function() { // это главная функция
var a = 5;
var b = 6;
...
var foo = function() { return a + b; }
/*
и прямо здесь, допустим мы хотим подключить внешний скрипт который бы имел доступ к переменным a, b (и даже мог вызывать foo) точно так же как и foo;
тоесть подключаем его как то так:
*/
loadScript(outerScript.js);
}();
и имеем внешний скрипт outerScript.js
/*
в котором должен идти только тот код, который делает что то с перенными и функциями главной функции из main.js
например:
*/
var c = foo();
var bar = function () { alert(c); }
bar(); // и получаем 11
как это реализовать??? |
Цитата:
Только вот на практике не сделать... Цитата:
- Какие варианты подгрузки внешнего скрипта ты знаешь? |
Цитата:
Цитата:
и динамический - но тут уже с помощью xmlHttpRequest(); отправляем запрос серверу и получает код внешнего скрипта из responseText; собственно попробывал второй вариант - не вышло, даже eval(responseText) не помог ( |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Когда "кол - во строк в одном файле уже под 300"? Или есть еще какие-то комбинации случаев? |
Цитата:
Цитата:
Цитата:
|
Цитата:
в любом случае без eval не обойтись, если нужен доступ к переменным внутри функции.. Хотя сам подход не очень правильный (кроме отдельных редких частных случаев). Я бы подумал о рефакторинге. |
Цитата:
|
Ну в смысле, переделать внешний скрипт таким образом, чтобы его можно было подключить стандартно, через тег <script> (изначально присутствующий на странице либо добавленный динамически, не суть важно).
И этот скрипт создавал бы объект (или функцию), которые можно было бы вызвать с теми или иными параметрами. |
Цитата:
var val='alert("test");';
// и
alert("test");
|
| Часовой пояс GMT +3, время: 08:04. |