Javascript-eval加载外部Javascript的几个Javascript需要等待

Javascript - eval a couple of javascripts that load external javascript need to wait

本文关键字:Javascript 几个 等待 加载 外部 Javascript-eval      更新时间:2023-09-26

我有个问题。我正在从数据库动态地将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来完成这项工作,方法是评估每个部分的on,并在每个交互之间等待。(它也失败了)。

更新好的,所以我用示例创建了2个工作链接http://getryk.com/test.php(如果你等待最后几毫秒,你会得到foo.bar警报)http://getryk.com/test1.php(你不会得到foo.bar警报)

更新日期2012年1月17日我有一个解决方案,我将每个脚本放入一个数组中,然后我构建了一个计时器来逐个运行它们(在注释上的链接后面(不能放置超过2个超链接;()在脚本上。onload)。

谢谢!

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