700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 动态加载JS后执行后续文件

动态加载JS后执行后续文件

时间:2020-06-05 02:08:35

相关推荐

动态加载JS后执行后续文件

在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载。

但有时候我们需要加载完JS后,执行某个函数。这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容。

如何判断js是否加载完成?(实现loadScript(url,callback)异步加载脚本,完成后执行回调函数,要求支持IE)

我们使用document的readyState属性:document.readyState

readyState 属性返回当前文档的状态。

该属性返回以下值:

uninitialized - 还未开始载入

loading - 载入中

interactive - 已加载,文档与用户可以开始交互

complete - 载入完成 (loaded)

执行函数代码:

function loadScript(url,callback){//如果有该JS,则移出该JSdocument.getElementById('') && document.getElementById('').remove();var script=document.createElement('script');script.type='text/javascript';script.async='async';script.src=url;//该ID放入上方的判断内 script.id = ""var head = document.head || document.getElementsByTagName('head')[0];head.appendChild(script);//或者放在body尾部document.body.appendChild(script);if(script.readyState){//IEscript.onreadystatechange=function(){if(script.readyState=='complete'||script.readyState=='loaded'){script.onreadystatechange=null;callback();}}}else{//非IEscript.onload=function(){callback();}}}

Jquery:使用 $.holdReady(true); $.getScript(); $.holdReady(false) 3个函数实现

$.holdReady()函数表示 延迟加载

$.holdReady(true); //hold住,等待a.js加载,后续代码不能执行$.getScript('a.js',function(){$.holdReady(false);//释放,a.js加载完成,继续执行后续代码});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。