一个简单的动态加载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代码
Dec 05 Javascript
深入分析js的冒泡事件
Dec 05 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 Javascript
jQuery实现产品对比功能附源码下载
Aug 09 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
Vue渲染函数详解
Sep 15 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
Jun 25 Javascript
JavaScript简单实现的仿微博留言功能示例
Jan 17 Javascript
JS数组属性去重并校验重复数据
Jan 10 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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的Yii框架的基本使用示例
2015/08/21 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
简单的python后台管理程序
2017/04/13 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
python 魔法函数实例及解析
2019/09/25 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
使用python去除图片白色像素的实例
2019/12/12 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
小区停车场管理制度
2014/01/27 职场文书
承诺书格式范文
2014/06/03 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
二年级学生期末评语
2014/12/26 职场文书
小组口号霸气押韵
2015/12/24 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python