动态加载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 判断方法和上面的差不多.

相关推荐