一个简单的动态加载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 相关文章推荐
javascript 节点排序 2
Jan 31 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
Oct 31 Javascript
js实现多选项切换导航菜单的方法
Feb 06 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
使用JS来动态操作css的几种方法
Dec 18 Javascript
js用正则表达式筛选年月日的实例方法
Jan 04 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入门学习知识点三 PHP上传
2011/07/14 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
php curl常用的5个经典例子
2017/01/20 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
javascript document.referrer 用法
2009/04/30 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Sanic框架Cookies操作示例
2018/07/17 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Python中的self用法详解
2019/08/06 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
pytorch 常用线性函数详解
2020/01/15 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
python3中数组逆序输出方法
2020/12/01 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
影视制作岗位职责
2013/12/04 职场文书
绿色环保演讲稿
2014/05/10 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
会计稽核岗位职责
2015/04/13 职场文书
学校运动会感想
2015/08/10 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
python 进阶学习之python装饰器小结
2021/09/04 Python