一个简单的动态加载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 相关文章推荐
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
自写的一个jQuery圆角插件
Oct 26 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
Apr 21 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
vuejs响应用户事件(如点击事件)
Mar 14 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php基础知识:函数基础知识
2006/12/13 PHP
通过具体程序来理解PHP里面的抽象类
2010/01/28 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
使用Python解析JSON数据的基本方法
2015/10/15 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python发展简史 Python来历
2019/05/14 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
python中如何进行连乘计算
2020/05/28 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
成考报名单位证明范本
2014/01/16 职场文书
行政求职信
2014/07/04 职场文书
人事代理委托书
2014/09/27 职场文书
办公室文员岗位职责
2015/02/04 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android