Динамическая загрузка 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 и выполнить метод из него? |
<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> |
imissyouso, после того как подгрузили .js вы можете напрямую выполнить данный код
$(document).ready( function(){ ZSite.lib.dynamicLoadScript('test.js'); test.init(); } |
Цитата:
|
lord2kim,
Ну да - поправил - зачитал ток первую часть (про загрузку |
Код:
Вы наверно обращаетесь к методу объекта test до того как загрузился скрипт |
imissyouso, как вариант
var js = document.createElement('script'); js.setAttribute('src',Link[i]); js.setAttribute('onload', test.init()); document.body.appendChild(js); |
Цитата:
var js = document.createElement('script'); js.onload=function(e){alert('load'}; js.setAttribute('src',Link[i]); |
спасибо, решил делать через .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 всё норм |
imissyouso,
Не засовывайте скрипт в head - нафег он там нужен после загрузки Ставьте document.body.appendChild(e); |
я думал это не тру держать скрипты вне head'a
|
imissyouso,
Не тру в исходном коде страницы - в динамике вы можете генерить их в любом удобном для Вас месте |
Часовой пояс GMT +3, время: 16:12. |