如何实现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 相关文章推荐
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
JavaScript避免代码的重复执行经验技巧分享
Apr 17 Javascript
js表头排序实现方法
Jan 16 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
vue 打包后的文件部署到express服务器上的方法
Aug 09 Javascript
微信小程序自定义模态对话框实例详解
Aug 16 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
webpack处理 css\less\sass 样式的方法
Aug 21 Javascript
Vue的Class与Style绑定的方法
Sep 01 Javascript
微信小程序tabBar用法实例详解
Dec 04 Javascript
详解关于Vuex的action传入多个参数的问题
Feb 22 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
推荐php模板技术[转]
2007/01/04 PHP
php自定文件保存session的方法
2014/12/10 PHP
$()JS小技巧
2007/07/21 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
python的json包位置及用法总结
2020/06/21 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
adidas泰国官网:adidas TH
2020/07/11 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
编写strcpy函数
2014/06/24 面试题
社区国庆节活动方案
2014/02/05 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android