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

作者:袖梨 2022-06-25


一、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

");

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

3、动态创建 script元素

注 ,

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

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

相关文章

精彩推荐