javascript loadScript异步加载脚本示例讲解


Posted in Javascript onNovember 14, 2013

一、语法:
loadScript(url[,callback])
或者
loadScript(settings)
二、settings支持的参数:
url:脚本路径
async:是否异步,默认false(HTML5)
charset:文件编码
cache:是否缓存,默认为true
success:加载成功后执行的函数,优先执行callback。
三、调用举例:

//loadScript(url[,callback])
loadScript(“http://code.jquery.com/jquery.js”);
loadScript(“http://code.jquery.com/jquery.js”,function(){
console.log(1)
});
//loadScript(settings)
loadScript({“url”:”http://code.jquery.com/jquery.js”,”async”:false,”charset”:”utf-8″,”cache”:false});
loadScript({“url”:”http://code.jquery.com/jquery.js”,”async”:false,”charset”:”utf-8″,”success”:function(){
console.log(2)
}});
//或者你可以酱紫:
//loadScript(settings[,callback])
loadScript({“url”:”http://code.jquery.com/jquery.js”,”async”:false,”charset”:”utf-8″},function(){
console.log($)
});

四、源代码:
function loadScript(url,callback) {
var head = document.head || document.getElementsByTagName(“head”)[0] || document.documentElement,
script,
options,if (typeof url === “object”) {
options = url;
url = undefined;
}
s = options || {};
url = url || s.url;
callback = callback || s.success;
script = document.createElement(“script”);
script.async = s.async || false;
script.type = “text/javascript”;
if (s.charset) {
script.charset = s.charset;
}
if(s.cache === false){
url = url+( /\?/.test( url ) ? “&” : “?” )+ “_=” +(new Date()).getTime();
}
script.src = url;
head.insertBefore(script, head.firstChild);
if(callback){
document.addEventListener ? script.addEventListener(“load”, callback, false) : script.onreadystatechange = function() {
if (/loaded|complete/.test(script.readyState)) {
script.onreadystatechange = null
callback()
}
}
}
}
Javascript 相关文章推荐
JavaScript面向对象之静态与非静态类
Feb 03 Javascript
非常棒的10款jQuery 幻灯片插件
Jun 14 Javascript
js中return false(阻止)的用法
Aug 14 Javascript
Javascript表格翻页效果实现思路及代码
Aug 23 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
Bootstrap中data-target 到底是什么
Feb 14 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
vue视图不更新情况详解
May 16 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
Sep 26 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
Oct 29 Javascript
MyEclipse取消验证Js的两种方法
Nov 14 #Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 #Javascript
javascript unicode与GBK2312(中文)编码转换方法
Nov 14 #Javascript
javascript按位非运算符的使用方法
Nov 14 #Javascript
javascript Array.prototype.slice的使用示例
Nov 14 #Javascript
js取消单选按钮选中示例代码
Nov 14 #Javascript
js实现目录定位正文示例
Nov 14 #Javascript
You might like
php下通过POST还是GET来传值
2008/06/05 PHP
PHP5 面向对象(学习记录)
2009/12/02 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
pandas 时间格式转换的实现
2019/07/06 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
python3让print输出不换行的方法
2020/08/24 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
类的核心特性有哪些
2014/01/01 面试题
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
工作会议欢迎词
2014/01/16 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers