使用jQuery異步加載 JavaScript腳本解決方案
更新時間:2014年04月20日 15:09:59 作者:
這篇文章主要介紹了如何使用jQuery異步加載JavaScript腳本,需要的朋友可以參考下
JavaScript 加載器在 Web 開發(fā)中是非常強(qiáng)大和有用的工具。目前流行的幾個加載器,像 curljs、LABjs 和 RequireJS 使用都很廣泛。他們功能強(qiáng)大的,但有些情況下可以有更簡單的方案。
如果你正在使用 jQuery,有一個內(nèi)置的方法可以用來加載腳本。如果你想延遲加載插件或任何其他類型的腳本,都可以使用這種方法。下面給大家介紹如何使用它。
實(shí)現(xiàn)方法
jQuery 內(nèi)置有 getScript 方法來加載一個腳本,處理返回的結(jié)果可以有幾種方法來實(shí)現(xiàn)。最基本的用法 jQuery.getScript 看起來像這樣:
jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {
/*
在腳本已載入并執(zhí)行后,就可以做一些處理了
*/
});
getScript 方法返回一個 jqXHR 對象,因此可以這樣使用:
jQuery.getScript("/path/to/myscript.js")
.done(function() {
/* 執(zhí)行成功后的處理 */
})
.fail(function() {
/* 執(zhí)行失敗后的處理 */
});
使用 jQuery.getScript 的最常見場景是延遲加載一個插件,并在加載后調(diào)用它:
jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
如果你需要做更高級的事情,如加載多個腳本和不同類型的文件(文本文件,圖像,CSS 文件等),我建議你切換到一個功能更強(qiáng)大的 JavaScript 加載器。如果只想延遲加載插件,而不是簡單地在每個頁面加載的情況下,getScript 是完美的!
緩存問題
需要注意的是,當(dāng)使用 jQuery.getScript 的時候,在腳本 URL 后面會自動被添加上時間戳,讓腳本不緩存。因此你需要設(shè)置讓所有的請求都緩存腳本:
jQuery.ajaxSetup({
cache: true
});
如果您不希望覆蓋所有的緩存與你的 AJAX 請求,最好使用 jQuery.ajax 方法并把 dataType 設(shè)置為 script,例如這樣:
jQuery.ajax({
url: "jquery.cookie.js",
dataType: "script",
cache: true
}).done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
在加載腳本的時候需要特別注意緩存問題!
如果你正在使用 jQuery,有一個內(nèi)置的方法可以用來加載腳本。如果你想延遲加載插件或任何其他類型的腳本,都可以使用這種方法。下面給大家介紹如何使用它。
實(shí)現(xiàn)方法
jQuery 內(nèi)置有 getScript 方法來加載一個腳本,處理返回的結(jié)果可以有幾種方法來實(shí)現(xiàn)。最基本的用法 jQuery.getScript 看起來像這樣:
復(fù)制代碼 代碼如下:
jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {
/*
在腳本已載入并執(zhí)行后,就可以做一些處理了
*/
});
getScript 方法返回一個 jqXHR 對象,因此可以這樣使用:
復(fù)制代碼 代碼如下:
jQuery.getScript("/path/to/myscript.js")
.done(function() {
/* 執(zhí)行成功后的處理 */
})
.fail(function() {
/* 執(zhí)行失敗后的處理 */
});
使用 jQuery.getScript 的最常見場景是延遲加載一個插件,并在加載后調(diào)用它:
復(fù)制代碼 代碼如下:
jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});
如果你需要做更高級的事情,如加載多個腳本和不同類型的文件(文本文件,圖像,CSS 文件等),我建議你切換到一個功能更強(qiáng)大的 JavaScript 加載器。如果只想延遲加載插件,而不是簡單地在每個頁面加載的情況下,getScript 是完美的!
緩存問題
需要注意的是,當(dāng)使用 jQuery.getScript 的時候,在腳本 URL 后面會自動被添加上時間戳,讓腳本不緩存。因此你需要設(shè)置讓所有的請求都緩存腳本:
復(fù)制代碼 代碼如下:
jQuery.ajaxSetup({
cache: true
});
如果您不希望覆蓋所有的緩存與你的 AJAX 請求,最好使用 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 });
});
在加載腳本的時候需要特別注意緩存問題!
您可能感興趣的文章:
- jquery zTree異步加載簡單實(shí)例分享
- JQuery異步加載無限下拉框級聯(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異步加載、模糊搜索簡單實(shí)例分享
- JQuery異步加載PartialView的方法
相關(guān)文章
IE中jquery.form中ajax提交沒反應(yīng)解決方法分享
用jquery form插件,進(jìn)行ajax提交,本來可以用,好好地,突然發(fā)現(xiàn),firefox,opera等可以提交,ie的success函數(shù)運(yùn)行了2012-09-09基于jQuery UI CSS Framework開發(fā)Widget的經(jīng)驗(yàn)
jQuery UI CSS Framework是jQuery UI中的一個樣式框架,可以利用jQuery Theme roller 來生成自己想要的css樣式效果。我們可以利用jQuery UI的一些框架來開發(fā)出基于jQuery UI CSS Framework效果的插件來。2010-08-08jquery之a(chǎn)jaxfileupload異步上傳插件(附工程代碼)
在處理文件上傳時需要使用到文件的異步上傳,這里使用Jquery Ajax File Uploader這個組件,服務(wù)器端采用struts2來處理文件上傳2013-04-04Jquery中LigerUi的彈出編輯框(實(shí)現(xiàn)方法)
本篇文章是對Jquery中LigerUi的彈出編輯框的實(shí)現(xiàn)方法進(jìn)行了分析介紹,需要的朋友可以參考下2013-07-07JQuery給元素添加/刪除節(jié)點(diǎn)比如select
本教程詳細(xì)介紹下jQuery添加/刪除Select的Option項(xiàng),感興趣的各位可以參考下哈2013-04-04