动态加载js css文件
诸如以下功能:某门户网的个人站点提供用户自定义模板功能.当用户选择模板时,列出多种模板以供选择,点击模板后可以预览;这种做法可以如下:
1)每点一个模板时,将选择的模板存放在数据库中,然后页面刷新以重新加载;页面读取数据库中记录以加载相应的css,js;但代价颇大;因为每点一次都要刷新,用户体验不好,而且每点一次都要进行数据库操作;
2)点后在JS函数中对页面进行相应的css,js 引用,以改变风格;用户取消预览只需去掉就可;
JS动态引用css,js 文件方法如下:
因为html中引用外部css,js文件均在<head></head>中添加:
<link href="**.css" type="text/css" rel="stylesheet"></link>
或:<script type="text/javascript" src="**.js"></script>
动态加载的想法也是一样.只不过是通过js创建相应的标签,然后将标签绑定到head下;
function loadExtentFile(filePath, fileType){
if(fileType == "js"){
var oJs = document.create_rElement('script');
oJs.setAttribute("type","text/javascript");
oJs.setAttribute("src", filename);//文件的地址 ,可为绝对及相对路径
document.getElementsByTagName_r("head")[0].appendChild(oJs);//绑定
}else if(fileType == "css"){
var oCss = document.create_rElement("link");
oCss.setAttribute("rel", "stylesheet");
oCss.setAttribute("type", "text/css");
oCss.setAttribute("href", filename);
document.getElementsByTagName_r("head")[0].appendChild(oCss);//绑定
}
}
loadExtentFile("js/func.js", "js");
loadExtentFile("default.css", "css");
清空:
var lists = document.getElementsByTagName_r("link");
for ( var i = 0; i < lists.length; i++) {
if (lists[i].getAttribute("href").indexOf(".css") != -1) == -1) {
lists[i].parentNode.removeChild(lists[i]);
}
}
上面的判断语句中可以加入自己的判断,如:只想去掉temp.css;则可以判断href中是否包括temp.css等;JS 判断方法和上面的差不多.