js 判断脚本加载完毕的代码


Posted in Javascript onJuly 13, 2011
if(this.isIE) { 
js.onreadystatechange=function(){if(js.readyState=="loaded" || js.readyState=="complete") callback();} 
}else{js.onload=function(){callback();}} 
js.onerror=function(){alert('Not Found (404): '+src)}//chrome

JS判断脚本是否加载完成

在“按需加载”的需求中,我们经常会判断当脚本加载完成时,返回一个回调函数,那如何去判断脚本的加载完成呢?
我们可以对加载的 JS 对象使用 onload 来判断(js.onload),此方法 Firefox2、Firefox3、Safari3.1+、Opera9.6+ 浏览器都能很好的支持,但 IE6、IE7 却不支持。曲线救国 —— IE6、IE7 我们可以使用 js.onreadystatechange 来跟踪每个状态变化的情况(一般为 loading 、loaded、interactive、complete),当返回状态为 loaded 或 complete 时,则表示加载完成,返回回调函数。
对于 readyState 状态需要一个补充说明:
在 interactive 状态下,用户可以参与互动。
Opera 其实也支持 js.onreadystatechange,但他的状态和 IE 的有很大差别。
具体实现代码如下:

function include_js(file) { 
var _doc = document.getElementsByTagName('head')[0]; 
var js = document.createElement('script'); 
js.setAttribute('type', 'text/javascript'); 
js.setAttribute('src', file); 
_doc.appendChild(js); 
if (!/*@cc_on!@*/0) { //if not IE 
//Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload 
js.onload = function () { 
alert('Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload'); 
} 
} else { 
//IE6、IE7 support js.onreadystatechange 
js.onreadystatechange = function () { 
if (js.readyState == 'loaded' || js.readyState == 'complete') { 
alert('IE6、IE7 support js.onreadystatechange'); 
} 
} 
} 
return false; 
} 
//execution function 
include_js('https://3water.com/jslib//jquery/jquery.js');
Javascript 相关文章推荐
如何使用json在前后台进行数据传输实例介绍
Apr 11 Javascript
jquery $.each()使用探讨
Sep 23 Javascript
jQuery中parent()方法用法实例
Jan 07 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
基于OL2实现百度地图ABCD marker的效果
Oct 01 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
js实现文字超出部分用省略号代替实例代码
Sep 01 Javascript
JavaScript中String对象的方法介绍
Jan 04 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
JavaScrpt判断一个数是否是质数的实例代码
Jun 11 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 jQuery
微信小程序实现底部弹出模态框
Nov 18 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
Jul 13 #Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 #Javascript
JS模拟面向对象全解(二、类型与赋值)
Jul 13 #Javascript
JS模拟面向对象全解(一、类型及传递)
Jul 13 #Javascript
一些实用的jQuery代码片段收集
Jul 12 #Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 #Javascript
在IE浏览器中resize事件执行多次的解决方法
Jul 12 #Javascript
You might like
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php文件上传的简单实例
2013/10/19 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
关于工资低的辞职信
2014/01/14 职场文书
出生公证委托书
2014/04/03 职场文书
党校学习个人总结
2015/02/15 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
virtualenv隔离Python环境的问题解析
2022/06/21 Python