如何实现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 相关文章推荐
IE无法设置短域名下Cookie
Sep 23 Javascript
event.currentTarget与event.target的区别介绍
Dec 31 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
再谈javascript原型继承
Nov 10 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
jQuery实现高亮显示网页关键词的方法
Aug 07 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
Aug 28 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
js定义类的方法示例【ES5与ES6】
Jul 30 Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 Javascript
vue Element左侧无限级菜单实现
Jun 10 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中去掉字符串首尾空格的方法
2012/05/19 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
php base64 编码与解码实例代码
2017/03/21 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
vue生命周期实例小结
2018/08/15 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
Python连接phoenix的方法示例
2017/09/29 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
用Python实现KNN分类算法
2017/12/22 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
简单了解Python3里的一些新特性
2019/07/13 Python
python批量解压zip文件的方法
2019/08/20 Python
简单了解python列表和元组的区别
2020/05/14 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
Python中的面向接口编程示例详解
2021/01/17 Python
简历的自我评价
2014/02/03 职场文书
冬季施工防火方案
2014/05/17 职场文书
横幅标语大全
2014/06/17 职场文书
2014年电工工作总结
2014/11/20 职场文书
会计出纳岗位职责
2015/03/31 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
oracle索引总结
2021/09/25 Oracle
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers