一个简单的动态加载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 相关文章推荐
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
JavaScript中实现单体模式分享
Jan 29 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
Jul 28 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
jQuery实现监控页面所有ajax请求的方法
Dec 10 Javascript
js编写的treeview使用方法
Nov 11 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
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图片上传类带图片显示
2006/11/25 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
分析经典Python开发工程师面试题
2019/04/08 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
python 常见的排序算法实现汇总
2020/08/21 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
三好学生评语大全
2014/12/29 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
地方课程教学计划
2015/01/19 职场文书
开平碉楼导游词
2015/02/06 职场文书
工作自我评价范文
2015/03/05 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
2019个人工作总结
2019/06/21 职场文书
导游词之江南周庄
2019/12/06 职场文书