国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解jquery getScript動態加載JS的方法

2024-05-06 15:45:39
字體:
來源:轉載
供稿:網友

動態加載javascript是非常強大的技術,如果使用jquery.html" target="_blank">jquery,則有一個內置方法可用于加載單個js文件,下文是錯新技術頻道給大家介紹的詳解jquery getScript動態加載JS的方法,一起去看看吧。

?

$.getScript(url,callback)


這個方法是jquery自身提供的一個用于動態加載js的方法。當網站需要加載大量js時,動態的加載js就是一個比較好的方法,當需要某個功能時再將相應的js加載進來。
但是自己在使用過程中卻發現了一些不盡如意的地方。

?

?


每次需要執行該功能的時候都會去請求一次這個js,這樣不是在幫倒忙嘛?
于是找到Jquery官網的API說明 http://api.jquery.com/jQuery.getScript/
其實這個方法就是對ajax方法的一個封裝,可以使用ajax方法的緩存來將http狀態200變成304,從而使用客戶端的緩存:

?

?

?

?

?


$.ajaxSetup({
cache: true
});


于是,會發現每次調用這個功能的時候,變成了如下所示:

?


每次調用js時后面的類似"?_=13126578"的參數已經沒有了,并且狀態都是Not Modified。
但是我有點“潔癖”,每次使用這個功能,雖說服務端不用再返回整個js文件了,但是每次還是得請求一次服務器,總覺得不舒服。于是便誕生了這篇博客的標題。
不多說,先上代碼:

?

?

?

?


<!DOCTYPE html >
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="jquery-1.7.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
//定義一個全局script的標記數組,用來標記是否某個script已經下載到本地
var scriptsArray = new Array();
$.cachedScript = function (url, options) {
//循環script標記數組
for (var s in scriptsArray) {
//console.log(scriptsArray[s]);
//如果某個數組已經下載到了本地
if (scriptsArray[s]==url) {
return { //則返回一個對象字面量,其中的done之所以叫做done是為了與下面$.ajax中的done相對應
done: function (method) {
if (typeof method == 'function'){ //如果傳入參數為一個方法
method();
}
}
};
}
}
//這里是jquery官方提供類似getScript實現的方法,也就是說getScript其實也就是對ajax方法的一個拓展
options = $.extend(options || {}, {
dataType: "script",
url: url,
cache:true //其實現在這緩存加與不加沒多大區別
});
scriptsArray.push(url); //將url地址放入script標記數組中
return $.ajax(options);
};
$(function () {
$('#btn').bind('click', function () {
$.cachedScript('t1.js').done(function () {
alertMe();
});
});
$('#btn2').bind('click', function () {
$.getScript('t1.js').done(function () {
alertMe();
});
});
});
</script>
</head>
<body>
<button id="btn">自定義的緩存方法</button>
<br />
<button id="btn2">getScript</button>
</body>
</html>


其中t1.js中代碼也就是一個函數

?

?

?


function alertMe() {
alert('clicked me');
}


到這里,整個改造就完成了,當你使用這個功能的時候,只會在初始化的時候向服務器發出一次js的請求,而加載完成后,就不會再次請求服務器了,哪怕是304狀態碼也不會有了。
?
以上就是詳解jquery getScript動態加載JS的方法,相信上面的文章會對你有用,建議你好好收藏,錯新技術頻道小編請大家隨時來閱讀。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 兴安盟| 镇巴县| 永嘉县| 新安县| 绵竹市| 平凉市| 通州区| 什邡市| 锡林浩特市| 苍山县| 鸡东县| 体育| 米泉市| 鹤岗市| 小金县| 巫山县| 兰考县| 东兴市| 徐闻县| 绵竹市| 德化县| 巧家县| 龙南县| 平泉县| 谢通门县| 岑溪市| 饶河县| 新干县| 通河县| 海林市| 阿鲁科尔沁旗| 彝良县| 荥阳市| 隆昌县| 利津县| 安徽省| 三门峡市| 雷州市| 盱眙县| 平凉市| 神池县|