Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.08.2012, 12:05
Интересующийся
Отправить личное сообщение для imissyouso Посмотреть профиль Найти все сообщения от imissyouso
 
Регистрация: 28.06.2011
Сообщений: 15

Динамическая загрузка js
Пытаюсь динамически подгрузить javascript:
$(document).ready( function(){
      ZSite.lib.dynamicLoadScript('test.js');  
      ZSite.lib.dynamicLoadCode('test.init();');  
}

ZSite.lib.dynamicLoadScript = function(url)
{
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);   
}
ZSite.lib.dynamicLoadCode = function(code)
{
   var e = document.createElement("script");

   e.type="text/javascript";
   e.innerHTML=code;
   document.getElementsByTagName("head")[0].appendChild(e);   
}


код из test.js и test.init() выполняются, но при выполнении test.init() вываливается ошибка что мол объект test не найден. Как так?

содержимое test.js :
test = {
        init: function()
        {
          alert('works!');
            } 
    }

Как правильнее подгрузить динамически js и выполнить метод из него?
Ответить с цитированием
  #2 (permalink)  
Старый 09.08.2012, 12:10
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script type="text/javascript">

[JS]Link=[];
Link[0]='test1.js';
Link[1]='test2.js';
Link[2]='test3.js';

for(var i=0; i<Link.lehgth; i++) {
   var js = document.createElement('script');
   js.setAttribute('src',Link[i]);
   document.body.appendChild(js);
   test.init();
}

</script>

Последний раз редактировалось Deff, 09.08.2012 в 12:17.
Ответить с цитированием
  #3 (permalink)  
Старый 09.08.2012, 12:13
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

imissyouso, после того как подгрузили .js вы можете напрямую выполнить данный код
$(document).ready( function(){
      ZSite.lib.dynamicLoadScript('test.js'); 
      test.init();
}
Ответить с цитированием
  #4 (permalink)  
Старый 09.08.2012, 12:17
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от imissyouso
но при выполнении test.init() вываливается ошибка что мол объект test не найден. Как так?
Вы наверно обращаетесь к методу объекта test до того как загрузился скрипт
Ответить с цитированием
  #5 (permalink)  
Старый 09.08.2012, 12:18
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

lord2kim,
Ну да - поправил - зачитал ток первую часть (про загрузку
Ответить с цитированием
  #6 (permalink)  
Старый 09.08.2012, 12:37
Интересующийся
Отправить личное сообщение для imissyouso Посмотреть профиль Найти все сообщения от imissyouso
 
Регистрация: 28.06.2011
Сообщений: 15

Код:
Вы наверно обращаетесь к методу объекта test до того как загрузился скрипт
а как навесить проверку на то что скрипт загрузился? и тлоько потом выйзвать его метод?
Ответить с цитированием
  #7 (permalink)  
Старый 09.08.2012, 12:40
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

imissyouso, как вариант
var js = document.createElement('script');
   js.setAttribute('src',Link[i]);
   js.setAttribute('onload', test.init());
   document.body.appendChild(js);
Ответить с цитированием
  #8 (permalink)  
Старый 09.08.2012, 12:53
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от imissyouso
а как навесить проверку на то что скрипт загрузился? и тлоько потом выйзвать его метод?
var js = document.createElement('script');
js.onload=function(e){alert('load'};
js.setAttribute('src',Link[i]);
Ответить с цитированием
  #9 (permalink)  
Старый 09.08.2012, 13:18
Интересующийся
Отправить личное сообщение для imissyouso Посмотреть профиль Найти все сообщения от imissyouso
 
Регистрация: 28.06.2011
Сообщений: 15

спасибо, решил делать через .ready jQuery.
Теперь вот такая беда: почему этот метод не работает в IE?
ZSite.lib.dynamicLoadScript = function(url)
{
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);   
   return e;
}

подругружаемый скрипт не выполняется. В FF всё норм
Ответить с цитированием
  #10 (permalink)  
Старый 09.08.2012, 13:39
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

imissyouso,
Не засовывайте скрипт в head - нафег он там нужен после загрузки
Ставьте
document.body.appendChild(e);
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическая загрузка скриптов dolas Events/DOM/Window 6 08.03.2013 06:07
ajax и загрузка html сраницы с js в <div> eidicon jQuery 2 09.05.2012 16:26
Динамическая загрузка фотки serb1897 Общие вопросы Javascript 4 09.12.2010 03:04
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33
Загрузка файла средставми js twolf Общие вопросы Javascript 8 21.10.2008 18:34