3个外链js,有什么方法使得第一个执行完,再执行其他js 如题啊,求大神指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么意思,我第二个js想得到第一个js运行完dom的状态,不是第一个js刚刚运行到一半的结果,但试了很多方法都不行啊 <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script><script type="text/javascript">$.getScript("script1.js").done(function() { $.getScript("script2.js").done(function() { $.getScript("script3.js"); });});</script> 需要在外链的js里加入回调事件,通知后续的js开始加载,也就相当于1楼所说的,如果控制不了外链,就没办法处理 4楼的方法好像不行啊,结果还是第二个js获得不是第一个js的最终结果。 Lz,你这样试试<script type="text/javascript" id="script_one"></script><script type="text/javascript" id="script_two"></script><script type="text/javascript" id="script_three"></script><script type="text/javascript">function Load(a,b,c) { var script = document.getElementById(a); script.src = b; if (script.readyState) { script.onreadystatechange = function() { if (script.readyState == "loaded" || script.readyState == "complete") { script.onreadystatechange = null; c && c(); } }; } else if(c){ script.onload = c; } }window.onload=function(){ Load('script_one','js1.js',function(){ Load('script_two','js2.js',function(){ Load('script_three','js3.js',null) }) })}</script> 4L的应该可以不过 lz估计是有异步的代码所以无效 4楼应该是可以,你也可以尝试下面的方法【Javascript文件加载:LABjs和RequireJS-加载js】 按顺序放在<head></head>里就行了 没错。怎么整那么复杂。<script type="text/javascript" src="theforever_csdn1.js"></script><script type="text/javascript" src="theforever_csdn2.js"></script>这样肯定是第一个先执行完的。然后再执行第二个。这是系统机制规定的。但先执行,不等于一定马上就有结果,比如你第一个里面有异步AJAX调用的话。楼主好好看看异步调用的使用方法吧。要确保在其返回后再执行其它内容,有两个方法:1.修改第一个JS,设置异步调用的回调函数,在返回成功时执行第二个JS里的方法。2.如果不能修改第一个JS,也可以做到。就是在第二个JS里面把第一个JS里的回调函数重载一下。 var theforever_csdn=旧回调函数的名称; 旧回调函数的名称=function() { theforever_csdn();//执行旧回调函数的功能(这个写不写,根据你的情况决定) 第二个JS要干的事情; }这样的话,当第一个JS异步调用返回开始调用回调函数时,就会执行你重定义的函数了,使你想干的事情在它完成后能去做。 如何在页面载入完成前替换document VS2005中掉应一个广告轮换页面问题(JAVASCRIPT) 急!!!!!!!!!!!!! 如何用js得到任意html元素的字体高度 大家好,怎样在ie里内嵌word,进行一些编辑工作 如何移除html中的第一个table? javascript错误 JS里面使一个表格区进行颜色渐变问题 关于动态表单的java 下拉框某些值不能呗选中 javascript浏览器兼容问题 关于clearTimeout和setTimeout的问题
<script type="text/javascript">
$.getScript("script1.js").done(function() {
$.getScript("script2.js").done(function() {
$.getScript("script3.js");
});
});
</script>
<script type="text/javascript" id="script_one"></script>
<script type="text/javascript" id="script_two"></script>
<script type="text/javascript" id="script_three"></script><script type="text/javascript">
function Load(a,b,c) {
var script = document.getElementById(a);
script.src = b;
if (script.readyState) {
script.onreadystatechange = function() {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
c && c();
}
};
} else if(c){
script.onload = c;
}
}
window.onload=function(){
Load('script_one','js1.js',function(){
Load('script_two','js2.js',function(){
Load('script_three','js3.js',null)
})
})
}
</script>
不过 lz估计是有异步的代码
所以无效
【Javascript文件加载:LABjs和RequireJS-加载js】
<script type="text/javascript" src="theforever_csdn1.js"></script>
<script type="text/javascript" src="theforever_csdn2.js"></script>
这样肯定是第一个先执行完的。然后再执行第二个。这是系统机制规定的。
但先执行,不等于一定马上就有结果,比如你第一个里面有异步AJAX调用的话。
楼主好好看看异步调用的使用方法吧。要确保在其返回后再执行其它内容,有两个方法:
1.修改第一个JS,设置异步调用的回调函数,在返回成功时执行第二个JS里的方法。
2.如果不能修改第一个JS,也可以做到。就是在第二个JS里面把第一个JS里的回调函数重载一下。
var theforever_csdn=旧回调函数的名称;
旧回调函数的名称=function()
{
theforever_csdn();//执行旧回调函数的功能(这个写不写,根据你的情况决定)
第二个JS要干的事情;
}
这样的话,当第一个JS异步调用返回开始调用回调函数时,就会执行你重定义的函数了,使你想干的事情在它完成后能去做。