Javascript - eval一些加载外部javascript的javascripts需要等待

时间:2012-01-16 08:06:37

标签: php javascript jquery ajax xmlhttprequest

我有问题。 我正在动态地将javascript代码加载到数据库的div中(可以通过任何javascript代码)。其中一个javascripts是一个外部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警报) http://getryk.com/test1.php(你不会得到foo.bar警告)

更新01.17.2012 我有一个解决方案,我将每个脚本放入一个数组然后我构建一个计时器来逐个运行它们(跟着注释上的链接(不能在script.onload上放置超过2个超链接;()) )。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果没有任何ajax调用为什么不等待document.ready?这意味着页面已完全加载,一切都在DOM对象中。