Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2013, 13:28
Аватар для Arramis
Кандидат Javascript-наук
Отправить личное сообщение для Arramis Посмотреть профиль Найти все сообщения от Arramis
 
Регистрация: 22.07.2013
Сообщений: 104

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

как это реализовать???
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2013, 15:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Arramis
Собственно, рассуждая логически, внешний скрипт нужно загружать непосредственно внутри функции текущего скрипта
Так "логически" рассуждая можно много чего еще понапридумывать...
Только вот на практике не сделать...

Сообщение от Arramis
как это реализовать?
Встречный вопрос:
- Какие варианты подгрузки внешнего скрипта ты знаешь?
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2013, 15:48
Аватар для Arramis
Кандидат Javascript-наук
Отправить личное сообщение для Arramis Посмотреть профиль Найти все сообщения от Arramis
 
Регистрация: 22.07.2013
Сообщений: 104

Сообщение от ksa Посмотреть сообщение
Только вот на практике не сделать...
почему не сделать ?? что если кол - во строк в одном файле уже под 300 ?? как обычно поступаютв таких случаях ?
Сообщение от ksa Посмотреть сообщение
Встречный вопрос:
- Какие варианты подгрузки внешнего скрипта ты знаешь?
статический - тоесть когда динамически создаем тег скрипт и appendChild ом вставляем его в head.
и динамический - но тут уже с помощью xmlHttpRequest(); отправляем запрос серверу и получает код внешнего скрипта из responseText;
собственно попробывал второй вариант - не вышло, даже eval(responseText) не помог (
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2013, 16:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Arramis
почему не сделать ?
Делай...

Сообщение от Arramis
создаем тег скрипт и appendChild ом вставляем его в head
И как такое запихать внутрь твоей функции?

Сообщение от Arramis
отправляем запрос серверу и получает код внешнего скрипта из responseText
Ну это даже не код... Просто текст.

Сообщение от Arramis
попробывал второй вариант - не вышло, даже eval(responseText) не помог (
А все было так логично! Правда?

Сообщение от Arramis
что если кол - во строк в одном файле уже под 300 ?
Тут я должен испугаться?

Сообщение от Arramis
как обычно поступаютв таких случаях ?
Пока не совсем понятно в каких именно случаях...

Когда "кол - во строк в одном файле уже под 300"? Или есть еще какие-то комбинации случаев?
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2013, 16:19
Аватар для Arramis
Кандидат Javascript-наук
Отправить личное сообщение для Arramis Посмотреть профиль Найти все сообщения от Arramis
 
Регистрация: 22.07.2013
Сообщений: 104

Сообщение от ksa Посмотреть сообщение
И как такое запихать внутрь твоей функции?
ну я это вобще сказал, а не применительно к примеру который первым постом.
Сообщение от ksa Посмотреть сообщение
Ну это даже не код... Просто текст.
чем тогда код от текста отличается ?
Сообщение от ksa Посмотреть сообщение
Пока не совсем понятно в каких именно случаях...

Когда "кол - во строк в одном файле уже под 300"? Или есть еще какие-то комбинации случаев?
случай один - это пример который я описал в самом первом посте - представь что в файле main.js не 5 строк а под 300 c такой же структурой кода.
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2013, 16:23
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Arramis
с помощью xmlHttpRequest(); отправляем запрос серверу и получает код внешнего скрипта из responseText;
собственно попробывал второй вариант - не вышло, даже eval(responseText) не помог (
думаю, надо открыть дебаггер и таки разобраться, почему этот вариант не сработал.
в любом случае без eval не обойтись, если нужен доступ к переменным внутри функции..

Хотя сам подход не очень правильный (кроме отдельных редких частных случаев). Я бы подумал о рефакторинге.
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2013, 16:29
Аватар для Arramis
Кандидат Javascript-наук
Отправить личное сообщение для Arramis Посмотреть профиль Найти все сообщения от Arramis
 
Регистрация: 22.07.2013
Сообщений: 104

Сообщение от Яростный Меч Посмотреть сообщение
Я бы подумал о рефакторинге.
не понял про рефакторинг =)
Ответить с цитированием
  #8 (permalink)  
Старый 26.08.2013, 16:39
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Ну в смысле, переделать внешний скрипт таким образом, чтобы его можно было подключить стандартно, через тег <script> (изначально присутствующий на странице либо добавленный динамически, не суть важно).

И этот скрипт создавал бы объект (или функцию), которые можно было бы вызвать с теми или иными параметрами.
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2013, 20:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Arramis
чем тогда код от текста отличается ?
Сравнивай...

var val='alert("test");';
// и
alert("test");
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение своих js скриптов в Chrome на любых сайтах avramch Opera, Safari и др. 5 28.07.2016 16:11
перенос подключение скриптов в header Артем125 Javascript под браузер 8 13.10.2012 05:16
подключение скриптов в скрипте elagin91 Общие вопросы Javascript 11 02.12.2011 19:01
Подключение скриптов из внешнего файла feelman Общие вопросы Javascript 19 29.05.2010 21:21