2012-12-16 5 views
0

Это мой код до сих пор, и основная проблема заключается в том, что скрипты иногда загружаются после загрузки главной страницы, запрашивается страница с AJAX и использует parseScript на выходе, есть ли способ сделать это функция приостанавливает и не возвращает ничего, пока все сценарии не будут загружены браузером?Загрузка Javascript

function addScriptTag(src) { 
    var node = document.getElementsByTagName("head")[0] || document.body; 
    if(node){ 
     var script = document.createElement("script"); 
     script.type="text/javascript"; 
     script.src=src 
     node.appendChild(script); 
    } else { 
     document.write("<script src='"+src+"' type='text/javascript'></script>"); 
    } 
} 

function parseScript(_source) { 
    var source = _source; 
    var scripts = source.match(/<script[^>]*src=[^>]*>/g); 
    if (scripts) { 
    for (var i = 0; i < scripts.length; i++) { 
     src = scripts[i].match(/src=("([^"]*)"|'([^']*)')/); 
     src = src[2] || src[3]; 
     if (src) { 
      addScriptTag(src); 
     } 
    } 
    } 
    var scripts = new Array(); 

    return source; 
} 
+0

Вы могли бы попытаться приложить свой сценарий в конце своего html-документа? – SaidbakR

+0

Это не вариант, единственная опция в настоящее время добавляет обратный вызов, который я не знаю в Javascript, у меня есть скрипт в моем заголовке, который динамически загружает страницы с помощью AJAX, используя настраиваемые URL-адреса для закладки, есть только 1 страница загружается за один раз, и я довольно часто использую myDiv = parseScript (AJAXFetchedCode) – user1841964

+0

@ user1841964: Что вы не знакомы с обратными вызовами? Они должны быть достаточно простыми для вашей ситуации (их очень сложно использовать, если ваш код становится слишком большим) – hugomg

ответ

3

Используйте window.onload или jquery $ (document) .ready, а затем вызовите эту функцию внутри? Или вызовите функцию в нижней части страницы.

Смежные вопросы