动态加载js和css

时光总嘲笑我的痴心妄想 提交于 2021-02-18 14:13:29

一、动态加载CSS
动态创建css样式有两种方式:
1、动态插入css外部文件的方法:
function loadStyle(url){
  var link = document.createElement('link');
    link.type = 'text/css';
    link.rel = 'stylesheet';
    link.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(link);
}
loadStyle('test.css');

2、动态加载css代码片段

function loadCssCode(code){
var style = document.createElement('style');
    style.type = 'text/css';
    style.rel = 'stylesheet';
    try{
        //for Chrome Firefox Opera Safari
        style .appendChild(document.createTextNode(code));
    }catch(ex){
        //for IE
        style.styleSheet.cssText = code;
    }
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(style);
}
loadCssCode('body{background-color:#f00}');

二、动态加载js

1、异步加载,并加载到前台资源库

function loadJsCallback(sid, jsurl, callback) {
 var nodeHead = document.getElementsByTagName('head')[0];
 var urlStr = jsurl.split(',');
 if(document.getElementById(sid + "JS0") == null){
  var urlLength = urlStr.length;
  for(var i = 0; i < urlStr.length; i++){
   var nodeScript = document.createElement('script');
   nodeScript.setAttribute('type', 'text/javascript');
   nodeScript.setAttribute('src', urlStr[i]);
   nodeScript.setAttribute('id', sid + 'JS' + i);
   if(callback != null){
    nodeScript.onload = nodeScript.onreadystatechange = function(curTarget) {
     if(nodeScript.ready){
      return false;
     }
     if(!nodeScript.readyState || nodeScript.readyState == "loaded"
       || nodeScript.readyState == 'complete'){
      urlLength -= 1;
      if(0 != urlLength){
       return false;
      }else{
       nodeScript.ready = true;
       callback();
      }
     }
    };
   }
   nodeHead.appendChild(nodeScript);
  }
 }else{
  if(callback != null){
   callback();
  }
 }
}

 



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!