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 相关文章推荐
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
Dec 27 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
Feb 26 Javascript
JavaScript处理解析JSON数据过程详解
Sep 11 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
vue引入微信sdk 实现分享朋友圈获取地理位置功能
Jul 04 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
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
PHP 进程锁定问题分析研究
2009/11/24 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
Python中type的构造函数参数含义说明
2015/06/21 Python
python获取list下标及其值的简单方法
2016/09/12 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python可视化text()函数使用详解
2020/02/11 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
Python发送邮件实现基础解析
2020/08/14 Python
中软Java笔试题
2012/11/11 面试题
Linux如何为某个操作添加别名
2015/02/05 面试题
爱心捐款倡议书
2014/04/14 职场文书
酒店节能降耗方案
2014/05/08 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
材料员岗位职责范本
2015/04/11 职场文书
2015年药房工作总结
2015/04/25 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
四风之害观后感
2015/06/09 职场文书
初一数学教学反思
2016/02/17 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript