2012-01-16 71 views
0

我遇到问题。 我从数据库动态加载JavaScript代码到一个div(可以通过真正的任何JavaScript代码)。其中一个javascripts是外部javascript,另一个是它包含对外部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来完成每个部分的每个部分,并在每个部分之间等待。 (它也失败了)。

UPDATE 行,所以我已经创建了例如2个工作环节 http://getryk.com/test.php(如果你等到最后几毫秒,你会得到foo.bar警报) http://getryk.com/test1.php(你不会得到foo.bar警报)

UPDATE 2012年1月17日 我有一个解决办法我把每个脚本到一个数组,然后我创建一个计时器,一个运行它们一个(随后的评论的链接(不能放超过2个超链接;()在script.onload上)

谢谢!

+0

我将添加一个演示,它将显示与警报不同的一个示例,另一个不带。 (如果它对任何人都不清楚) – kodkod 2012-01-16 08:20:08

+0

你怎么实际得到'addJS'变量? “addJS”中的脚本是否以特定的顺序排列,即需要等待的脚本之前的脚本?或者不能保证? – bububaba 2012-01-16 09:13:09

+0

我得到客户端的addJS(我不知道会发生什么)。我不知道顺序,但我认为它会是异步的。我的目标确实是等待几毫秒或一秒钟,当我捕捉外部的JS(所以它会让浏览器加载它,我想这就是问题) – kodkod 2012-01-16 09:18:49

回答

0

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