我遇到问题。 我从数据库动态加载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上)
谢谢!
我将添加一个演示,它将显示与警报不同的一个示例,另一个不带。 (如果它对任何人都不清楚) – kodkod 2012-01-16 08:20:08
你怎么实际得到'addJS'变量? “addJS”中的脚本是否以特定的顺序排列,即需要等待的脚本之前的脚本?或者不能保证? – bububaba 2012-01-16 09:13:09
我得到客户端的addJS(我不知道会发生什么)。我不知道顺序,但我认为它会是异步的。我的目标确实是等待几毫秒或一秒钟,当我捕捉外部的JS(所以它会让浏览器加载它,我想这就是问题) – kodkod 2012-01-16 09:18:49