我有问题。 我正在动态地将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个超链接;()) )。
谢谢!
答案 0 :(得分:0)
如果没有任何ajax调用为什么不等待document.ready?这意味着页面已完全加载,一切都在DOM对象中。