一个简单的动态加载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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
javascript textarea光标定位方法(兼容IE和FF)
Mar 12 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
javascript如何判断输入的url是否正确
Apr 11 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
Feb 19 Javascript
全面详细的jQuery常见开发技巧手册
Feb 21 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
Apr 21 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
js使用formData实现批量上传
Mar 27 Javascript
JQuery获得内容和属性方法解析
May 30 jQuery
element-ui tree结构实现增删改自定义功能代码
Aug 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
python 自动提交和抓取网页
2009/07/13 Python
Python help()函数用法详解
2014/03/11 Python
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
小学毕业典礼主持词
2014/03/27 职场文书
爱祖国演讲稿
2014/05/04 职场文书
电子专业求职信
2014/06/19 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
男方婚前保证书
2015/02/28 职场文书
安全生产会议制度
2015/08/06 职场文书