使用jQuery非同步載入 JavaScript指令碼解決方案

來源:互聯網
上載者:User

JavaScript 載入器在 Web 開發中是非常強大和有用的工具。目前流行的幾個載入器,像 curljs、LABjs 和 RequireJS 使用都很廣泛。他們功能強大的,但有些情況下可以有更簡單的方案。

如果你正在使用 jQuery,有一個內建的方法可以用來載入指令碼。如果你想消極式載入外掛程式或任何其他類型的指令碼,都可以使用這種方法。下面給大家介紹如何使用它。

實現方法

jQuery 內建有 getScript 方法來載入一個指令碼,處理返回的結果可以有幾種方法來實現。最基本的用法 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 的最常見情境是消極式載入一個外掛程式,並在載入後調用它:
複製代碼 代碼如下:
jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});

如果你需要做更進階的事情,如載入多個指令碼和不同類型的檔案(文字檔,映像,CSS 檔案等),我建議你切換到一個功能更強大的 JavaScript 載入器。如果只想消極式載入外掛程式,而不是簡單地在每個頁面載入的情況下,getScript 是完美的!

緩衝問題

需要注意的是,當使用 jQuery.getScript 的時候,在指令碼 URL 後面會自動被添加上時間戳記,讓指令碼不緩衝。因此你需要設定讓所有的請求都緩衝指令碼:
複製代碼 代碼如下:
jQuery.ajaxSetup({
cache: true
});

如果您不希望覆蓋所有的緩衝與你的 AJAX 請求,最好使用 jQuery.ajax 方法並把 dataType 設定為 script,例如這樣:
複製代碼 代碼如下:
jQuery.ajax({
url: "jquery.cookie.js",
dataType: "script",
cache: true
}).done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
});

在載入指令碼的時候需要特別注意緩衝問題!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.