一个简单的动态加载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 表单下所有元素的隐藏
Jul 25 Javascript
JavaScript随机排序(随即出牌)
Sep 17 Javascript
js去除重复字符串两种实现方法
Jan 09 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
Jul 08 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
jquery代码实现多选、不同分享功能
Jul 31 Javascript
利用Angular.js限制textarea输入的字数
Oct 20 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
Aug 16 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
JavaScript 实现轮播图特效的示例
Nov 05 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 已经成熟
2006/12/04 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
javascript 函数使用说明
2010/04/07 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
js日期联动示例
2014/05/02 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python多进程机制实例详解
2015/07/02 Python
Python语言的变量认识及操作方法
2018/02/11 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
怎么写好自荐信
2013/10/30 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
献爱心标语
2014/06/21 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
电影地道战观后感
2015/06/04 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android