подключение скриптов друг к другу ...
Возникла острая необходимость подключить внешний скрипт к текущему так, чтобы он имел доступ к переменным и функциям в другой функции текущего скрипта.
Собственно, рассуждая логически, внешний скрипт нужно загружать непосредственно внутри функции текущего скрипта - тоесть допустим имеем главный скрипт 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:57. |