javascript - 如何动态加载JS文件时阻塞之后的JS执行,在动态加载的JS文件加载完成后才执行接下去的代码?
巴扎黑
巴扎黑 2017-04-11 10:36:35
[JavaScript讨论组]

index.html


            
            
            
            
            
            
            
            
            
            
            
            

            
巴扎黑
巴扎黑

全部回复(5)
高洛峰

看了楼主的情景:

回调不合适 ,因为b.func()的调用不是在a.js中完成,实际上这个问题出现的场景是a.js是由我编写的一个sdk,sdk中去动态加载另一个js文件,index.html才是sdk的实际使用者,他需要使用b.js中的内容

觉得这样的SDK设计的使用方式是不合理的。竟然你的sdk种需要异步加载其他代码,那么在你的sdk种一定要提供一个机制,回调或者事件来告诉使用者代码都加载完了,他可以安全的使用sdk的方法了。就像是document ready一样,你需要有个sdk ready

阿神

重新理解题主思路后,修正如下:

首先,阻塞的路子不对,应该回调。这个思路不变。
然后,靠事件把这个回调解决

a.js

var oHead = document.getElementsByTagName('head')[0];

var oScript = document.createElement('script');

oScript.setAttribute('src','b.js');

oScript.setAttribute('type','text/javascript');

oScript.onload = function(){
    window.dispatchEvent(new Event('b-loaded'));
};

oHead.appendChild(oScript);

index.html

<script src='a.js'></script>
<script>
    window.addEventListener('b-loaded', function(){
        b.func();
    }, false);
</script>
PHPz

同楼上

巴扎黑

回调,或者用 document.write 加载
回调比较合适

迷茫

使用 requirejs 一个异步加载JS,模块化代码的框架,非常NICE。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号