如何实现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 相关文章推荐
简单的无缝滚动程序-仅几行代码
May 08 Javascript
JSQL 批量图片切换的实现代码
May 05 Javascript
用js实现小球的自由移动代码
Apr 22 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
JQuery each()嵌套使用小结
Apr 18 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
May 04 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
微信小程序中setInterval的使用方法
Sep 29 Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 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轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
php实现的农历算法实例
2015/08/11 PHP
php接口隔离原则实例分析
2019/11/11 PHP
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
Python 深入理解yield
2008/09/06 Python
python发送邮件接收邮件示例分享
2014/01/21 Python
python基础教程之数字处理(math)模块详解
2014/03/25 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
python如何实现内容写在图片上
2018/03/23 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
高一自我鉴定
2013/12/17 职场文书
刑事代理授权委托书
2014/09/17 职场文书
个人四风对照检查材料
2014/09/26 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
2014年终个人工作总结
2014/11/07 职场文书
新教师个人工作总结
2015/02/06 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android