Javascript - оцените пару javascript, которые загружают внешний javascript, нужно подождать - PullRequest
0 голосов
/ 16 января 2012

У меня проблема.Я динамически загружаю 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).

Спасибо!

1 Ответ

0 голосов
/ 16 января 2012

Если нет никаких вызовов ajax Почему бы просто не подождать document.ready?Это означало бы, что страница полностью загружена и все находится внутри объекта DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...