动态加载js、css的简单实现代码
一、原生js:
/**
*加载js和css文件
*@paramjsonData.path前缀路径
*@paramjsonData.url需要加载的js路径或css路径
*@paramjsonData.type需要加载的类型js或css
*/
functionloadWriteFiles(jsonData)
{
jsonData.path=jsonData.path!=undefined?jsonData.path:"";
if(jsonData.type=="js")
{
document.writeln("<scripttype='text/javascript'src='"+jsonData.path+jsonData.url+"'></script>");
}
elseif(jsonData.type=="css")
{
document.writeln("<linkrel='stylesheet'href='"+jsonData.path+jsonData.url+"'type='text/css'/>");
}
}
/**
*加载js或css到head中
*@paramjsonData.path前缀路径
*@paramjsonData.url需要加载的js路径或css路径
*@paramjsonData.type需要加载的类型js或css
*/
functionloadFilesToHead(jsonData)
{
jsonData.path=jsonData.path!=undefined?jsonData.path:"";
if(jsonData.type=="js")
{
var_js=document.createElement("script");
_js.setAttribute("type","text/javascript");
_js.setAttribute("src",jsonData.path+jsonData.url);
_js.onload=_js.onreadystatechange=function(){
if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){
if("function"==typeof(jsonData["callback"])&&jsonData["callback"]){
jsonData["callback"].call(this);
}
}
_js.onload=_js.onreadystatechange=null;
}
document.getElementsByTagName("head")[0].appendChild(_js);//追加到head标签内
}
elseif(jsonData.type=="css")
{
var_css=document.createElement("link");
_js.setAttribute("type","text/css");
_css.setAttribute("rel","stylesheet");
_css.setAttribute("href",jsonData.path+jsonData.url);
document.getElementsByTagName("head")[0].appendChild(_css);//追加到head标签内
}
}
二、jquery版本:
采用deferred对象返回结果
varuiLoad=uiLoad||{};
(function($,$document,uiLoad){
"usestrict";
varloaded=[],
promise=false,
deferred=$.Deferred();
uiLoad.load=function(srcs){
srcs=$.isArray(srcs)?srcs:srcs.split(/\s+/);
if(!promise){
promise=deferred.promise();
}
$.each(srcs,function(index,src){
promise=promise.then(function(){
returnsrc.indexOf('.css')>=0?loadCSS(src):loadScript(src);
});
});
deferred.resolve();
returnpromise;
};
varloadScript=function(src){
if(loaded[src])returnloaded[src].promise();
vardeferred=$.Deferred();
varscript=$document.createElement('script');
script.src=src;
script.onload=function(e){
deferred.resolve(e);
};
script.onerror=function(e){
deferred.reject(e);
};
$document.body.appendChild(script);
loaded[src]=deferred;
returndeferred.promise();
};
varloadCSS=function(href){
if(loaded[href])returnloaded[href].promise();
vardeferred=$.Deferred();
varstyle=$document.createElement('link');
style.rel='stylesheet';
style.type='text/css';
style.href=href;
style.onload=function(e){
deferred.resolve(e);
};
style.onerror=function(e){
deferred.reject(e);
};
$document.head.appendChild(style);
loaded[href]=deferred;
returndeferred.promise();
}
})(jQuery,document,uiLoad);
以上这篇动态加载js、css的简单实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。