一个简单的动态加载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图片的展开和收缩实现代码
Apr 16 Javascript
深入理解JQuery keyUp和keyDown的区别
Dec 12 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
jQuery知识点整理
Jan 30 Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 Javascript
JQuery中serialize() 序列化
Mar 13 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
Javascript 二维数组
2009/11/26 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
JavaScript显式数据类型转换详解
2019/03/18 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
成语的广告词
2014/03/19 职场文书
驾驶员培训方案
2014/05/01 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
2015年技术员工作总结
2015/04/10 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
热爱劳动主题班会
2015/08/14 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
Python集合的基础操作
2021/11/01 Python