如何实现JavaScript动态加载CSS和JS文件


Posted in Javascript onDecember 28, 2020

项目中需要用到动态加载CSS 文件,整理了一下,顺便融合了动态加载JS 的功能写成了一个对象,先上代码:

var dynamicLoading = {
 css: function(path){
 if(!path || path.length === 0){
 throw new Error('argument "path" is required !');
 }
 var head = document.getElementsByTagName('head')[0];
 var link = document.createElement('link');
 link.href = path;
 link.rel = 'stylesheet';
 link.type = 'text/css';
 head.appendChild(link);
 },
 js: function(path){
 if(!path || path.length === 0){
 throw new Error('argument "path" is required !');
 }
 var head = document.getElementsByTagName('head')[0];
 var script = document.createElement('script');
 script.src = path;
 script.type = 'text/javascript';
 head.appendChild(script);
 }
}

对象包含两个完全独立的方法,分别用来加载CSS 文件和JS 文件,参数均为欲加载的文件路径。原理非常的简单:对于不同的加载文件类型创建不同的节点,然后添加各自的属性,最后扔到head 标签里面。经测试,本方法兼容各浏览器,安全、无毒、环保,是 web 开发人员工作常备代码。

下面是调用代码,异常简单:

//动态加载 CSS 文件
dynamicLoading.css("test.css");

//动态加载 JS 文件
dynamicLoading.js("test.js");

动态加载js和css

开发过程中经常需要动态加载js和css,今天特意总结了一下常用的方法。

1、动态加载js

方法一:动态加载js文件

// 动态加载js脚本文件
 function loadScript(url) {
 var script = document.createElement("script");
 script.type = "text/javascript";
 script.src = url;
 document.body.appendChild(script);
 }
 // 测试
 loadScript("javascript/lib/cookie.js");

方法二:动态加载js脚本

// 动态加载js脚本
 function loadScriptString(code) {
 var script = document.createElement("script");
 script.type = "text/javascript";
 try{
  // firefox、safari、chrome和Opera
  script.appendChild(document.createTextNode(code));
 }catch(ex) {
  // IE早期的浏览器 ,需要使用script的text属性来指定javascript代码。
  script.text = code;
 }
 document.body.appendChild(script);
 }
 // 测试
 var text = "function test(){alert('test');}";
 loadScriptString(text);
 test();

2、动态加载css

方法一:动态加载css文件

// 动态加载css文件
 function loadStyles(url) {
 var link = document.createElement("link");
 link.type = "text/css";
 link.rel = "stylesheet";
 link.href = url;
 document.getElementsByTagName("head")[0].appendChild(link);
 }
 // 测试
 loadStyles("css/secondindex.css");

方法二:动态加载css脚本

// 动态加载css脚本
 function loadStyleString(cssText) {
 var style = document.createElement("style");
 style.type = "text/css";
 try{
  // firefox、safari、chrome和Opera
  style.appendChild(document.createTextNode(cssText));
 }catch(ex) {
  // IE早期的浏览器 ,需要使用style元素的stylesheet属性的cssText属性
  style.styleSheet.cssText = cssText;
 }
 document.getElementsByTagName("head")[0].appendChild(style);
 }
 // 测试
 var css = "body{color:blue;}";
 loadStyleString(css);

以上就是告诉大家如何实现JavaScript动态加载CSS和JS文件,希望对大家的学习有所帮助。

Javascript 相关文章推荐
弹出广告特效代码(一个IP只弹出一次)
May 11 Javascript
javascript 三种编解码方式
Feb 01 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
js判断输入是否为数字的具体实例
Aug 03 Javascript
Jquery 动态循环输出表格具体方法
Nov 23 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
js禁止页面刷新与后退的方法
Jun 08 Javascript
Jquery调用iframe父页面中的元素及方法
Aug 23 Javascript
微信小程序 Toast自定义实例详解
Jan 20 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
Sep 28 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 #Javascript
JS实现的页面自定义滚动条效果
Oct 26 #Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 #Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 #Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 #Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 #Javascript
jquery获取url参数及url加参数的方法
Oct 26 #Javascript
You might like
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php对象工厂类完整示例
2018/08/09 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
再谈javascript原型继承
2014/11/10 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
简单英文演讲稿
2014/01/01 职场文书
心得体会的写法
2014/09/05 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
放假通知怎么写
2015/08/18 职场文书
小学运动会开幕词
2016/03/04 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js