Динамическая загрузка скриптов на JavaScript
В том случае если необходимо динамически подгрузить на страницу какие-то скрипты, возможно использовать например прообраз следующего кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
window.onload=function(){ if (typeof jQuery == 'undefined') { dhtmlLoadScript("https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"); }; //проверяем, а подгрузился ли juery? var timerId = setInterval(function() { if (typeof jQuery == 'undefined'){ console.log("--еще не догрузился jquery..ждем.."); } else { dhtmlLoadScript("http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"); console.log("--вроде jquery загрузился, гружу jquery-ui.."); clearInterval(timerId); var timerId2 = setInterval(function() { if (typeof $.ui == 'undefined'){ console.log("--еще не догрузился jquery-ui..ждем.."); } else { clearInterval(timerId2); console.log("--вроде jquery-ui загрузился, инициализирую чат.."); mainchat(); }; },1000); }; }, 1000); }; function dhtmlLoadScript(url){ var e = document.createElement("script"); e.src = url; e.type="text/javascript"; document.getElementsByTagName("head")[0].appendChild(e); } |
в данном случае в целях кроссбраузерности, используется проверка по таймеру, загрузился код или нет, ибо в файрефоксе идет последовательная загрузка кода, а в хроме паралельная. В связи с чем, может возникать ситуация дальнейшего выполнения кода, при еще не подгруженных скриптах.