如何实现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 19 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
JavaScript文本框脚本编写的注意事项
Jan 25 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
May 04 Javascript
Vuejs第十三篇之组件——杂项
Sep 09 Javascript
vue购物车插件编写代码
Nov 27 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 Javascript
node使用request请求的方法
Dec 20 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也能干大事 随机函数
2015/04/14 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
用jscript实现新建word文档
2007/06/15 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
求职信需要的五点内容
2014/02/01 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
公务员个人年终总结
2015/02/12 职场文书
员工升职自荐信
2015/03/27 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
高中开学感言
2015/08/01 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
python 实现体质指数BMI计算
2021/05/26 Python