Я загружаю скрипты и стили динамически из javascript, например, this.Как заставить браузер ждать загрузки ресурсов?
Проблема в том, что браузер не дождался загрузки сценария.
рассмотреть у меня есть функция с именем functionToBeCalled() внутри файла сценария с именем сценария file.js
У меня есть функция для загрузки файла сценария.
<script type="text/javascript">
var listOfJavaScriptsLoaded = new Array();
function LoadScriptFile(scriptUrl){
var isScriptLoaded = false;
var i = 0;
for(i = 0; i < listOfJavaScriptsLoaded.length; i ++){
if(listOfJavaScriptsLoaded[i] == scriptUrl){
isScriptLoaded = true;
break;
}
}
if(isScriptLoaded == false){
var headTag= document.getElementsByTagName('head')[0];
var scriptTag= document.createElement('script');
scriptTag.type= 'text/javascript';
scriptTag.src= scriptUrl;
headTag.appendChild(scriptTag);
listOfJavaScriptsLoaded.push(scriptUrl);
}
}
LoadScriptFile("script-file.js");
functionToBeCalled();
</script>
В настоящее время происходит то, что браузер не дожидается загрузки тега сценария и переходит к следующей команде. Я получаю ошибку «undefined functionToBeCalled()». это естественно. Но дело в том, что когда я проверяю в firebug, тег скрипта был сформирован и файл загружен.
Как я могу заставить браузер приостановить загрузку и возобновить работу после того, как актив был загружен?
Edit1: Эта проблема возникает только тогда, когда я загрузить страницу в AJAX, а не в нормальных нагрузках страниц
Edit2: Или есть возможность прочитать сценарий/CSS файл яваскрипт и написать он непосредственно в разметке в тегах сценариев
Если я использую window.stop(), загрузка полностью прекращается. как я могу заставить его возобновить работу с той же строки?
Или можно ли считать, что загрузка по-прежнему происходит, и сбросить ее в событии onload?
Зачем загружать их таким образом, в первую очередь?Разве это абсолютно не вариант, чтобы поместить их прямо в главный тег или записать '
Вы можете иметь конкретные причины, чтобы загрузить сценарий динамически, но представить вариант, если вы выписывать элемент сценария в HTML-вывода, как так :
браузер прекратит разбор, пока этот сценарий не будет загружен и не будет интерпретирован.
Это также действительный in the BODY.
источник
2010-11-08 10:38:56
Ознакомьтесь с LABjs (http://labjs.com/) от Getify Solutions. LABjs позволяет загружать скриптовые скрипты одновременно, но запускаться по порядку.
источник
2010-11-08 11:26:02 Alohci
не так ли происходит с jQuery? – ZX12R
В соответствии с документацией labjs есть что-то несовместимое с jQuery 1.3, но не с 1.4 – Alohci
выглядит очень хорошим вариантом, за исключением того факта, что многие из подключаемых модулей еще не начали поддержку 1.4 еще. :( – ZX12R
Я бы рекомендовал посмотреть на Cuzillion. Это позволит вам поэкспериментировать с вызовами javascript и css разными способами, чтобы увидеть, как они реагируют в браузере.
Это должно ответить на ваш вопрос. Просто выполните его, прежде чем ваша страница будет сделана, загрузив
body
.источник
2010-11-08 12:17:09 Eric
моя проблема в том, когда я загружаю страницу через ajax ... она отлично работает в противном случае ... – ZX12R