一个简单的动态加载js和css的jquery代码


Posted in Javascript onSeptember 01, 2014

一个简单的动态加载js和css的jquery代码,用于在生成页面时通过js函数加载一些共通的js和css文件。

//how to use the function below: 
//$.include('file/ajaxa.js');$.include('file/ajaxa.css'); 
//or $.includePath = 'file/';$.include(['ajaxa.js','ajaxa.css']);(only if .js and .css files are in the same directory) 
$.extend({ 
includePath: '', 
include: function(file) 
{ 
var files = typeof file == "string" ? [file] : file; 
for (var i = 0; i < files.length; i++) 
{ 
var name = files[i].replace(/^\s|\s$/g, ""); 
var att = name.split('.'); 
var ext = att[att.length - 1].toLowerCase(); 
var isCSS = ext == "css"; 
var tag = isCSS ? "link" : "script"; 
var attr = isCSS ? " type='text/css' rel='stylesheet' " : " type='text/javascript' "; 
var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'"; 
if ($(tag + "[" + link + "]").length == 0) $("head").prepend("<" + tag + attr + link + "></" + tag + ">"); 
} 
} 
}); 
$.include('../js/jquery-ui-1.8.21.custom.min.js'); 
$.include('../css/black-tie/jquery-ui-1.8.21.custom.css');

将该函数写入一个common.js文件中,在html中加载该common.js文件,就可以达到目的。
注意:
1.在html5中,<script>标签已经不支持language属性了,所以我删除了:

var attr = isCSS ? " type='text/css' rel='stylesheet' " : " language='javascript' type='text/javascript' ";

中的language='javascript'
2.原作者在写入js和css标签时,用的是:

document.write("<" + tag + attr + link + "></" + tag + ">");

但是经过实践,发现document.write()方法会在写入前清除原页面的所有内容,也就相当于覆盖的意思,这样明显达不到我的需要,我需要在加载页面时动态的向页面导入共通的js和css,而不能清除我原页面的其他任何内容,所以查了下api,我改用了:

$("head").prepend("<" + tag + attr + link + "></" + tag + ">");

这个方法,$("head").prepend()方法的作用是在<head>标签的最前端追加写入内容。

最后,再补充一个方法,也是通过共通js来实现,应该比上面这个方法更容易理解:

Dynamically loading external JavaScript and CSS files 

To load a .js or .css file dynamically, in a nutshell, it means using DOM methods to first create a swanky new "SCRIPT" or "LINK" element, assign it the appropriate attributes, and finally, use element.appendChild() to add the element to the desired location within the document tree. It sounds a lot more fancy than it really is. Lets see how it all comes together: 

function loadjscssfile(filename, filetype){ 
if (filetype=="js"){ //if filename is a external JavaScript file 
var fileref=document.createElement('script') 
fileref.setAttribute("type","text/javascript") 
fileref.setAttribute("src", filename) 
} 
else if (filetype=="css"){ //if filename is an external CSS file 
var fileref=document.createElement("link") 
fileref.setAttribute("rel", "stylesheet") 
fileref.setAttribute("type", "text/css") 
fileref.setAttribute("href", filename) 
} 
if (typeof fileref!="undefined") 
document.getElementsByTagName("head")[0].appendChild(fileref) 
} 

loadjscssfile("myscript.js", "js") //dynamically load and add this .js file 
loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file 
loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file
Javascript 相关文章推荐
用javascript连接access数据库的方法
Nov 17 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 Javascript
bootstrap使用validate实现简单校验功能
Dec 02 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
Mar 07 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
Sep 01 #Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 #Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 #Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 #Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
Sep 01 #Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 #Javascript
影响jQuery使用的14个方面
Sep 01 #Javascript
You might like
收音机的保养
2021/03/01 无线电
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
2016/12/23 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python中import机制详解
2017/11/14 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python之文件读取一行一行的方法
2018/07/12 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
奥地利网上书店:Weltbild
2017/07/14 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
自荐信如何制作?
2014/02/21 职场文书
刊首寄语大全
2014/04/11 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
护理见习报告范文
2014/11/03 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
2019个人半年工作总结
2019/06/21 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
MySQL数据库之存储过程 procedure
2022/06/16 MySQL