JS动态加载样式和脚本

在前端开发的过程中,不可避免的需要根据前置条件动态加载样式和脚本文件,今天我们来简单的实现一下动态加载样式和脚本文件的方法。

动态加载样式文件

使用以下脚本可实现页面CSS文件的动态加载。

JavaScript 复制代码
function loadStyle(url) {
  try {
    document.createStyleSheet(url);
  } catch (e) {
    var cssLink = document.createElement("link");
    cssLink.rel = "stylesheet";
    cssLink.type = "text/css";
    cssLink.href = url;
    var head = document.getElementsByTagName("head")[0];
    head.appendChild(cssLink);
  }
}

动态加载脚本文件

JavaScript 复制代码
function appendscript(src, text, reload, charset) {
  var id = hash(src + text);
  if (!reload && in_array(id, evalscripts)) return;
  if (reload && $(id)) {
    $(id).parentNode.removeChild($(id));
  }
  evalscripts.push(id);
  var scriptNode = document.createElement("script");
  scriptNode.type = "text/javascript";
  scriptNode.id = id;
  scriptNode.charset = charset
    ? charset
    : BROWSER.firefox
    ? document.characterSet
    : document.charset;
  try {
    if (src) {
      scriptNode.src = src;
      scriptNode.onloadDone = false;
      scriptNode.onload = function() {
        scriptNode.onloadDone = true;
        JSLOADED[src] = 1;
      };
      scriptNode.onreadystatechange = function() {
        if (
          (scriptNode.readyState == "loaded" ||
            scriptNode.readyState == "complete") &&
          !scriptNode.onloadDone
        ) {
          scriptNode.onloadDone = true;
          JSLOADED[src] = 1;
        }
      };
    } else if (text) {
      scriptNode.text = text;
    }
    document.getElementsByTagName("head")[0].appendChild(scriptNode);
  } catch (e) {}
}

总结

可以看到,所谓的动态加载其实就是通过JS方法创建文件的引用标签,给标签添加上文件路径后,再使用DOM方法动态地追加至HTML页面。

相关推荐
工呈士1 分钟前
HTML 模板技术与服务端渲染
前端·html
皮实的芒果3 分钟前
前端实时通信方案对比:WebSocket vs SSE vs setInterval 轮询
前端·javascript·性能优化
鹿九巫3 分钟前
【CSS】层叠,优先级与继承(三):超详细继承知识点
前端·css
奕云4 分钟前
react-redux源码分析
前端
咸鱼一号机5 分钟前
:global 是什么
前端
专业掘金5 分钟前
0425 手打基础丸
前端
五号厂房5 分钟前
Umi Max 如何灵活 配置多环境变量
前端
红尘散仙8 分钟前
六、WebGPU 基础入门——Vertex 缓冲区和 Index 缓冲区
前端·rust·gpu
南望无一8 分钟前
webpack性能优化和构建优化
前端·webpack
il9 分钟前
Deepdive into Tanstack Query - 2.0 Query Core 概览
前端·javascript