如何实现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 相关文章推荐
javascript 操作文件 实现方法小结
Jul 02 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
海量经典的jQuery插件集合
Jan 12 Javascript
jquery 3D 标签云示例代码
Jun 12 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
vue 计时器组件的实现代码
Sep 14 Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
Feb 23 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 Javascript
JavaScript原生数组函数实例汇总
Oct 14 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的session过期设置
2013/06/29 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python算的上脚本语言吗
2020/06/22 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
小浪底导游词
2015/02/12 职场文书
党纪处分决定书
2015/06/24 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL