一个简单的动态加载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 相关文章推荐
JS面向对象编程 for Cookie
Sep 19 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
js中的scroll和offset 使用比较的实例与分析
Sep 29 Javascript
html dom节点操作(获取/修改/添加或删除)
Jan 23 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
JS实现自动切换文字的导航效果代码
Aug 27 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
Jun 27 Javascript
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
layer.js之回调销毁对话框的例子
Sep 11 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
Jun 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
5.PHP的其他功能
2006/10/09 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python实现井字棋小游戏
2020/03/09 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
高中生职业规划范文
2014/03/09 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
个人委托书范文
2015/01/28 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python