使用jQuery異步加載 JavaScript腳本解決方案
更新時(shí)間:2014年04月20日 15:09:59 作者:
這篇文章主要介紹了如何使用jQuery異步加載JavaScript腳本,需要的朋友可以參考下
JavaScript 加載器在 Web 開發(fā)中是非常強(qiáng)大和有用的工具。目前流行的幾個(gè)加載器,像 curljs、LABjs 和 RequireJS 使用都很廣泛。他們功能強(qiáng)大的,但有些情況下可以有更簡(jiǎn)單的方案。
如果你正在使用 jQuery,有一個(gè)內(nèi)置的方法可以用來加載腳本。如果你想延遲加載插件或任何其他類型的腳本,都可以使用這種方法。下面給大家介紹如何使用它。
實(shí)現(xiàn)方法
jQuery 內(nèi)置有 getScript 方法來加載一個(gè)腳本,處理返回的結(jié)果可以有幾種方法來實(shí)現(xiàn)。最基本的用法 jQuery.getScript 看起來像這樣:
jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {
/*
在腳本已載入并執(zhí)行后,就可以做一些處理了
*/
});
getScript 方法返回一個(gè) jqXHR 對(duì)象,因此可以這樣使用:
jQuery.getScript("/path/to/myscript.js")
.done(function() {
/* 執(zhí)行成功后的處理 */
})
.fail(function() {
/* 執(zhí)行失敗后的處理 */
});
使用 jQuery.getScript 的最常見場(chǎng)景是延遲加載一個(gè)插件,并在加載后調(diào)用它:
jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
如果你需要做更高級(jí)的事情,如加載多個(gè)腳本和不同類型的文件(文本文件,圖像,CSS 文件等),我建議你切換到一個(gè)功能更強(qiáng)大的 JavaScript 加載器。如果只想延遲加載插件,而不是簡(jiǎn)單地在每個(gè)頁(yè)面加載的情況下,getScript 是完美的!
緩存問題
需要注意的是,當(dāng)使用 jQuery.getScript 的時(shí)候,在腳本 URL 后面會(huì)自動(dòng)被添加上時(shí)間戳,讓腳本不緩存。因此你需要設(shè)置讓所有的請(qǐng)求都緩存腳本:
jQuery.ajaxSetup({
cache: true
});
如果您不希望覆蓋所有的緩存與你的 AJAX 請(qǐng)求,最好使用 jQuery.ajax 方法并把 dataType 設(shè)置為 script,例如這樣:
jQuery.ajax({
url: "jquery.cookie.js",
dataType: "script",
cache: true
}).done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
在加載腳本的時(shí)候需要特別注意緩存問題!
如果你正在使用 jQuery,有一個(gè)內(nèi)置的方法可以用來加載腳本。如果你想延遲加載插件或任何其他類型的腳本,都可以使用這種方法。下面給大家介紹如何使用它。
實(shí)現(xiàn)方法
jQuery 內(nèi)置有 getScript 方法來加載一個(gè)腳本,處理返回的結(jié)果可以有幾種方法來實(shí)現(xiàn)。最基本的用法 jQuery.getScript 看起來像這樣:
復(fù)制代碼 代碼如下:
jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {
/*
在腳本已載入并執(zhí)行后,就可以做一些處理了
*/
});
getScript 方法返回一個(gè) jqXHR 對(duì)象,因此可以這樣使用:
復(fù)制代碼 代碼如下:
jQuery.getScript("/path/to/myscript.js")
.done(function() {
/* 執(zhí)行成功后的處理 */
})
.fail(function() {
/* 執(zhí)行失敗后的處理 */
});
使用 jQuery.getScript 的最常見場(chǎng)景是延遲加載一個(gè)插件,并在加載后調(diào)用它:
復(fù)制代碼 代碼如下:
jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
如果你需要做更高級(jí)的事情,如加載多個(gè)腳本和不同類型的文件(文本文件,圖像,CSS 文件等),我建議你切換到一個(gè)功能更強(qiáng)大的 JavaScript 加載器。如果只想延遲加載插件,而不是簡(jiǎn)單地在每個(gè)頁(yè)面加載的情況下,getScript 是完美的!
緩存問題
需要注意的是,當(dāng)使用 jQuery.getScript 的時(shí)候,在腳本 URL 后面會(huì)自動(dòng)被添加上時(shí)間戳,讓腳本不緩存。因此你需要設(shè)置讓所有的請(qǐng)求都緩存腳本:
復(fù)制代碼 代碼如下:
jQuery.ajaxSetup({
cache: true
});
如果您不希望覆蓋所有的緩存與你的 AJAX 請(qǐng)求,最好使用 jQuery.ajax 方法并把 dataType 設(shè)置為 script,例如這樣:
復(fù)制代碼 代碼如下:
jQuery.ajax({
url: "jquery.cookie.js",
dataType: "script",
cache: true
}).done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
在加載腳本的時(shí)候需要特別注意緩存問題!
您可能感興趣的文章:
- jquery zTree異步加載簡(jiǎn)單實(shí)例分享
- JQuery異步加載無限下拉框級(jí)聯(lián)功能實(shí)現(xiàn)示例
- 自寫的jQuery異步加載數(shù)據(jù)添加事件
- jQuery異步加載數(shù)據(jù)并添加事件示例
- struts2+jquery+json實(shí)現(xiàn)異步加載數(shù)據(jù)(自寫)
- MVC Ajax Helper或Jquery異步加載部分視圖
- 如何使用PHP+jQuery+MySQL實(shí)現(xiàn)異步加載ECharts地圖數(shù)據(jù)(附源碼下載)
- jquery zTree異步加載、模糊搜索簡(jiǎn)單實(shí)例分享
- JQuery異步加載PartialView的方法
相關(guān)文章
jQuery setTimeout傳遞字符串參數(shù)報(bào)錯(cuò)的解決方法
這篇文章主要介紹了jQuery setTimeout傳遞字符串參數(shù)報(bào)錯(cuò)的解決方法,需要的朋友可以參考下2014-06-06
基于JQuery實(shí)現(xiàn)的類似購(gòu)物商城的購(gòu)物車
使用JQuery Clone 模板來實(shí)現(xiàn)商品信息的展示,展現(xiàn)形式可以通過修改模板中的td來確定每一行顯示多少個(gè)商品信息2011-12-12
jquery 將disabled的元素置為enabled的三種方法
在jquery中可以通過jqueryObj.attr("disabled","disabled")將頁(yè)面中某個(gè)元素置為不可編輯或觸發(fā)狀態(tài),但是在jquery的API reference中并沒說明怎么將頁(yè)面置為disable的元素重新置為可觸發(fā)或可編輯的。2009-07-07
用jquery實(shí)現(xiàn)的模擬QQ郵箱里的收件人選取及其他效果(一)
今天要說的是用jquery的語(yǔ)法和組件dialog及Autocomplete來制作QQ郵箱的發(fā)件人操作功能,認(rèn)為這個(gè)太過簡(jiǎn)單的可以離開了。2011-01-01
jQuery實(shí)現(xiàn)鼠標(biāo)經(jīng)過圖片預(yù)覽大圖效果
我們可以借助jQuery來實(shí)現(xiàn)一些很酷炫的效果,本篇為大家介紹下通過jQuery實(shí)現(xiàn)當(dāng)鼠標(biāo)經(jīng)過了圖片數(shù),圖片會(huì)放大進(jìn)行預(yù)覽大圖,需要的朋友可以參考下2014-04-04

