如何实现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 相关文章推荐
浅析JS中document对象的一些重要属性
Mar 06 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
Feb 28 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
Aug 20 Javascript
微信小程序实现留言板
Oct 31 Javascript
使vue实现jQuery调用的两种方法
May 12 jQuery
了解javascript中let和var及const关键字的区别
May 24 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
Jul 27 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
Aug 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
生成sessionid和随机密码的例子
2006/10/09 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
Symfony控制层深入详解
2016/03/17 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python 数据结构之队列的实现
2017/01/22 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python如何将装饰器定义为类
2020/07/30 Python
python学习笔记之多进程
2020/08/06 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
打架检讨书50字
2014/01/11 职场文书
大学生创业策划书
2014/02/02 职场文书
销售类求职信
2014/06/13 职场文书
交通志愿者活动总结
2014/06/27 职场文书
见习报告格式要求
2014/11/04 职场文书
2014年学生会工作总结
2014/11/07 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
学校运动会加油词
2015/07/18 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
python中的random模块和相关函数详解
2022/04/22 Python