У меня проблема.Я динамически загружаю javascript-коды в div из базы данных (можно по-настоящему любым javascript-кодом).один из javascript - это внешний javascript, а другой - после вызова внешнего javascript, означающий, что мне нужно дождаться загрузки внешнего javascript, прежде чем я смогу вызвать функцию.
Моя проблема в том, что я нене знаю имя функции или я бы вызвал их вручную.Вот пример
<html>
<head>
</head>
<body>
<div id='testdiv'> </div>
<script type='text/javascript'>
var mydiv = document.getElementById('testdiv');
var addJS = '<script type="text/javascript">function testing() { alert("test"); }<\/script><script type="text/javascript">document.write("<script type=\'text/javascript\' src=external.js><\/script\>");<\/script><script type="text/javascript">call_too_external_function();<\/script>';
addJS = addJS.replace(new RegExp('<\/script>', 'g'),"");
addJS = addJS.replace(new RegExp('<script type="text/javascript">', 'g'),"");
var tmp = document.write;
document.write = function () {
//catching the document write and evaling the content of the script
//but still call_too_external_function is undefined..
var justtest = [].concat.apply([], arguments).join('');
var mysrc = jQuery(justtest).attr('src');
jQuery("head").append(justtest);
alert('need to wait!!!');
//IF this alert exists and i wait a few milliseconds to click it call_too_external_function will work
//IF i comment the alert out call_too_external_function will be undefined.
//IS THERE A WAY TO PAUSE HERE untill this is loaded?
}
eval(addJS);
document.write = tmp;
</script>
</body>
</html>
Моя главная проблема заключается в том, что я не знаю, что находится в addJS.
Я надеюсь, что это достаточно конкретно, чтобы получить помощь, я был бы очень признателен.Если есть больше информации, которую я могу дать, пожалуйста, дайте мне знать.Также обратите внимание, что я не загружал jQuery в приведенном выше примере, поэтому он не будет работать вне стола, это просто пример того, что я пытаюсь выполнить.Одно из решений, которые я попробовал, заключается в том, чтобы сделать это с помощью setTimeout, оценивая каждый раздел и ожидая между каждым взаимодействием.(это тоже не удалось).
ОБНОВЛЕНИЕ хорошо, поэтому я создал 2 рабочие ссылки с примером http://getryk.com/test.php (если вы подождете последние несколько миллисекунд, вы получите foo.bar alert) http://getryk.com/test1.php (вы не получите предупреждение foo.bar)
ОБНОВЛЕНИЕ 01.17.2012 У меня есть решение, я помещаю каждый скрипт вЗатем я создал таймер для запуска их по одному (следовал по ссылке в комментарии (не могу поместить более 2 гиперссылок; () в script.onload).
Спасибо!