如何实现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中的事件处理
Jan 16 Javascript
JSON.stringify 语法实例讲解
Mar 14 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
Oct 12 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
Aug 01 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
JS关于刷新页面的相关总结
May 09 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
解决Angular4项目部署到服务器上刷新404的问题
Aug 31 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 Javascript
微信小程序实现单个或多个倒计时功能
Nov 01 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脚本不报错的原因
2014/06/12 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
初学Python实用技巧两则
2014/08/29 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
马智宇婚礼主持词
2014/03/22 职场文书
治庸问责心得体会
2014/09/12 职场文书
医德医风自我评价
2014/09/19 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python