一个简单的动态加载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 相关文章推荐
Jquery ui css framework
Jun 28 Javascript
js带按钮的提示框可供选择示例代码
Sep 17 Javascript
JavaScript学习笔记之Function对象
Jan 22 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
Aug 11 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
react 中父组件与子组件双向绑定问题
May 20 Javascript
微信小程序收藏功能的实现代码
Jun 19 Javascript
原生js实现滑块区间组件
Jan 20 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
PHP递归算法的详细示例分析
2013/02/19 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
js使用递归解析xml
2014/12/12 Javascript
js动态切换图片的方法
2015/01/20 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
javascript如何创建对象
2016/08/29 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python人民币小写转大写辅助工具
2018/06/20 Python
python读取文件名并改名字的实例
2019/01/07 Python
Python 支付整合开发包的实现
2019/01/23 Python
django url到views参数传递的实例
2019/07/19 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
《与象共舞》教学反思
2014/02/24 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
招标保密承诺书
2015/01/20 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
实验室安全管理制度
2015/08/05 职场文书
导游词之岳阳楼
2019/09/25 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记