一个简单的动态加载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中的ready方法及实现按需加载css,js实例代码
Sep 27 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
Nov 19 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
Javascript中的async awai的用法
May 17 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
linux下php上传文件注意事项
2016/06/11 PHP
php英文单词统计器
2016/06/23 PHP
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
Python实现简单的2048小游戏
2021/03/01 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
红十字会救护培训简讯
2015/07/20 职场文书