Динамическая загрузка 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); |
| Часовой пояс GMT +3, время: 15:47. |