javascript 无阻塞脚本 ,通过dom动态加载
2012-07-30 18:25
513 查看
通过Dom的方法, createElement方法来创建动态的script标签,检测标签加载完成是script的onload方法来检测加载成功,而ie里面不支持这个方法,则是onreadystatechange方法来检测.详细看以下代码:
function addScript(src,callBack)
{
var head=document.documentElement.getElementsByTagName("head")[0];
var scri=document.createElement("script");
scri.type="text/javascript";
scri.src=src;
//一般在设置src之后再append到dom树里面,
//详情 http://www.iefans.net/ie-script-element-readystate/
head.appendChild(scri);
/*ie browser*/
if(document.all)
{
scri.onreadystatechange=function()
{
if(scri.readyState=="loaded"||scri.readyState=="complete")
{
alert(src+" ie brower 加载完毕!");
callBack&&callBack();
}
}
}
/*other browser*/
else
{
scri.onload=function()
{
alert(src+" not ie brower 加载完毕!");
callBack&&callBack();
}
}
}
addScript("js.js",function(){addScript("js2.js")});
在这段代码里面我异步加载了两个js(js.js和js2.js), 在加载第一个js之后又调用了加载第二个js. 应该注意的是ie里面的onreadystatechange方法里面,判断加载状态(scri.readyState) 的状态有:
• uninitialized – 原始状态
• loading – 下载数据中..
• loaded – 下载完成
• interactive – 还未执行完毕.
• complete – 脚本执行完毕
因为在ie各个版本里面无法确定哪个是加载成功,所以判断了两个状态,下载完成和执行完成两种状态,有关详细的ie中script加载状态请参考: http://www.iefans.net/ie-script-element-readystate/
function addScript(src,callBack)
{
var head=document.documentElement.getElementsByTagName("head")[0];
var scri=document.createElement("script");
scri.type="text/javascript";
scri.src=src;
//一般在设置src之后再append到dom树里面,
//详情 http://www.iefans.net/ie-script-element-readystate/
head.appendChild(scri);
/*ie browser*/
if(document.all)
{
scri.onreadystatechange=function()
{
if(scri.readyState=="loaded"||scri.readyState=="complete")
{
alert(src+" ie brower 加载完毕!");
callBack&&callBack();
}
}
}
/*other browser*/
else
{
scri.onload=function()
{
alert(src+" not ie brower 加载完毕!");
callBack&&callBack();
}
}
}
addScript("js.js",function(){addScript("js2.js")});
在这段代码里面我异步加载了两个js(js.js和js2.js), 在加载第一个js之后又调用了加载第二个js. 应该注意的是ie里面的onreadystatechange方法里面,判断加载状态(scri.readyState) 的状态有:
• uninitialized – 原始状态
• loading – 下载数据中..
• loaded – 下载完成
• interactive – 还未执行完毕.
• complete – 脚本执行完毕
因为在ie各个版本里面无法确定哪个是加载成功,所以判断了两个状态,下载完成和执行完成两种状态,有关详细的ie中script加载状态请参考: http://www.iefans.net/ie-script-element-readystate/
相关文章推荐
- 你了解JavaScript非阻塞加载脚本吗
- JavaScript高级程序设计之DOM之DOM 操作技术之动态脚本第10.2.1讲
- javascript脚本阻塞与模块化加载
- 动态加载脚本提升javascript性能
- js 如何通过js脚本动态加载js文件及读写cookie
- JavaScript 动态加载脚本和样式
- Javascript动态加载脚本与样式
- 用javascript动态加载javascript脚本/css样式表
- 无阻塞加载javascript脚本
- javascript基础:动态加载脚本和样式
- 通过 AJAX 加载的 JavaScript 脚本的调试
- JavaScript 通过Ajax 动态加载CheckBox复选框
- javascript脚本阻塞与模块化加载
- 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密(转载)
- 动态加载外部 css和javascript脚本 文件
- 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密
- 无阻塞的Javascript脚本(二)——动态脚本元素
- 如何实现从服务器端向页面动态加载JavaScript脚本?
- 动态加载脚本提升javascript性能
- HTML5学习笔记(二十三):DOM应用之动态加载脚本