jquery实现动态加载js文件的例子

一、jQuery getScript()方法加载javascript

jQuery内置了一个方法可以加载单一的js文件;当加载完成后你可以在回调函数里执行后续操作。最基本的使用jQuery.getScript的方法是这样:

jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {/*
做一些加载完成后需要执行的事情
*/});

这个getScript方法返回一个jqxhr,你可以像下面这样用它:

jQuery.getScript("/path/to/myscript.js")
.done(function() {
/* 耶,没有问题,这里可以干点什么 */
})
.fail(function() {
/* 靠,马上执行挽救操作 */
});
最常见的使用jQuery.getScript的地方是延迟加载一个js插件,而且在加载完成时执行它:

jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});

二、缓存问题

有一个非常重要的问题,使用jQuery.getScript时,你需要用一个时间戳字符串跟在需要加载的js地址后面,防止它被缓存。但是,如果你希望这个脚本被缓存,你需要设置全局缓存变量,像下面这样:

jQuery.ajaxSetup({
cache: true
});
jQuery.ajax({ url: "jquery.cookie.js", dataType: "script", cache: true }).done(function() { jQuery.cookie("cookie_name", "value", { expires: 7 }); });

在加载脚本时一定要小心缓存问题!

动态加载Js、Css文件代码:

//动态加载文件代码
$.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’ ” : ” language=’javascript’ type=’text/javascript’ “;
var link = (isCSS ? “href” : “src”) + “='” + $.includePath + name + “‘”;
if ($(tag + “[” + link + “]”).length == 0) document.write(“”);
}
}
});
//使用方法
$.includePath = ‘Scripts/WorkSpace/';
$.include([‘GetVehicleGroup.js’]);
注:代码系转载。不过已经使用过,很好使

2.立即使用Js文件中的方法
因为是动态加载的。考虑到网络原因。立即使用JS文件中的方法会报错。不过可以使用下边代码

function _GetVehicleGroup() {

if (“undefined” == typeof (GetVehicleGroupIsOk)) {
setTimeout(“_GetVehicleGroup()”, 200);
return;

}
//动态加载JS文件中的方法
GetVehicleGroup();
}
注:要在要加载的JS文件里加上一个标记,如:

var GetVehicleGroupIsOk = “enable”;

下面介绍三种异步执行加载Js 脚本的方法。

1、直接document.write

<script language="javascript">

    document.write("<script src='test.js'><\/script>");

</script>

2、动态改变已有script的src 属性

<script src='' id="s1"></script>

<script language="javascript">

    s1.src="test.js"

</script>

3、动态创建 script元素

<script>

    var oHead = document.getElementsByTagName('HEAD').item(0);

    var oScript= document.createElement("script");

    oScript.type = "text/javascript";

    oScript.src="test.js";

    oHead.appendChild( oScript);

</script>

注 ,

这三种方法都是异步的,所以在采用这类方法动态加载Js 的同时,主界面的Js脚本是继续执行的,所以可能出现通过异步加载的Js代码得不到预期的效果的情况。这时候可以考虑采用Ajax加载Js的方法。

大概原理 :用XMLHTTP取得要脚本的内容,再创建 Script 对象。另外注意编码的保持一致。因为服务器与XML使用UTF8编码传送数据。

时间: 2024-08-03 05:16:21

jquery实现动态加载js文件的例子的相关文章

jquery与js动态加载js文件的例子

如果用jquery append直接加载script标签的话,会报错的.除了document.write外,还有没有其他的比较好的动态加载js文件的方法. 1,jquery方法 $.getScript("./test.js");   //加载js文件    $.getScript("./test.js",function(){   //加载test.js,成功后,并执行回调函数      console.log("加载js文件");  }); 

jquery ajax()动态加载脚本文件的例子

上次说的jquery动态加载脚本,使用的是getScript(您可以点击相关文章查看),缺点和优点都说了.封装的函数是不自带缓存功能的,默认每次加载都刷新本地脚本.这样的一个特点对于网速不是很快的网站来说,那就是一个漫长的等待,虽然页面已经加载完毕了,但脚本还在路上,访客会以为脚本加载失败,就会反复的刷新页面,结果每次加载脚本都是重新获取的,造成资源的中断和大量的服务器请求.为了解决这个问题,我自己写了个方法,哈哈,当然是根据getScript把ajax方法打包到一个函数里便于多次复用. <!D

jquery及js实现动态加载js文件的方法_javascript技巧

本文实例讲述了jquery及js实现动态加载js文件的方法.分享给大家供大家参考,具体如下: 问题: 如果用jquery append直接加载script标签的话,会报错的.除了document.write外,还有没有其他的比较好的动态加载js文件的方法. 解决方法: 1.jquery方法 $.getScript("./test.js"); //加载js文件 $.getScript("./test.js",function(){ //加载test.js,成功后,并执

JS 动态加载js文件和css文件 同步/异步的两种简单方式_javascript技巧

/*动态添加js或css,URL:文件路径,FileType:文件类型(js/css)*/ function AddJsFiles(URL,FileType){ var oHead = document.getElementsByTagName('HEAD').item(0); var addheadfile; if(FileType=="js"){ addheadfile= document.createElement("script"); addheadfile

JS动态加载JS文件实例方法详解

1.直接document.write  代码如下 复制代码 <script language="javascript">     document.write("<script src='test.js'></script>"); </script> 2.动态改变已有script的src属性  代码如下 复制代码 <script src='' id="s1"></script>

JavaScript动态加载js文件

/********************************************************************* * JavaScript动态加载js文件 * 说明: * 之前没有使用require来动态加载js文件,自己模仿实现了一个,参考文档2中 * 有jQuery的方法,以及等效原型. * * 2017-8-28 深圳 龙华樟坑村 曾剑锋 **************************************************************

动态加载js文件的三种方法

<script language="网页特效"> function importfn(){  var head = document.getelementsbytagname("head")[0];  var script = document.createelement('script');  script.id = 'sid';  script.type = 'text/javascript';  script.src = '../js/alertt

动态加载js文件简单示例_javascript技巧

本文实例讲述了动态加载js文件的方法.分享给大家供大家参考,具体如下: function loadScript(url){ var hd = document.getElementsByTagName('head')[0], js = document.createElement('script'); js.src = url; js.type = "text/JavaScript"; if(js.addEventListener){ js.addEventListener("

使用jquery动态加载Js文件和Css文件_jquery

如果你有很多关联的CSS文件要一起加载,或者想动态的加载不同的CSS文件,那么下面的方法你一定对你有帮助.Jquery动态加载Js和Css扩展方法 $.extend({ includePath: '', include: function(file) { var files = typeof file == "string" ? [file]:file; for (var i = 0; i < files.length; i++) { var name = files[i].re