欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript腳本延遲加載有哪些方式

 更新時間:2024年04月15日 11:02:11   作者:不想禿頭程序員  
本文主要介紹了JavaScript腳本延遲加載有哪些方式,主要介紹了五種方式,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧

1.defer屬性

defer 屬性是用于延遲腳本的執(zhí)行,它可以用于 <script> 標簽中。使用 defer 屬性加載的腳本會在 HTML 解析完畢后,DOMContentLoaded 事件觸發(fā)之前執(zhí)行,即在文檔完全解析后才會執(zhí)行腳本。

<script src="script.js" defer></script>

在上面的例子中,script.js 腳本會被延遲加載,并且會在 HTML 解析完成后立即開始下載,但直到文檔解析完成后才會執(zhí)行,即在 DOMContentLoaded 事件之前執(zhí)行。
使用 defer 屬性的好處是,它不會阻塞文檔的解析和渲染,同時保證了腳本在合適的時機執(zhí)行。這對于需要確保腳本在 DOM 樹完全構建之后執(zhí)行的情況非常有用,例如對于需要操作 DOM 元素的腳本。

補充:

在這里,"文檔"指的是指HTML文檔,即網頁的HTML結構。在瀏覽器中加載網頁時,瀏覽器會按照HTML文檔中的結構解析網頁內容,構建DOM(文檔對象模型)樹,然后再進行渲染顯示給用戶。這個過程中,HTML文檔的解析和構建DOM樹稱為"文檔解析"。所以,當我們說文檔解析完成時,意味著HTML文檔已經被完全解析,DOM樹已經構建完成,網頁的基本結構已經建立好了,可以開始執(zhí)行后續(xù)的JavaScript腳本了。

2.async屬性

async 屬性也是用于 <script> 標簽的屬性之一,用于異步加載腳本。與 defer 屬性不同,使用 async 屬性加載的腳本在下載完成后會立即執(zhí)行,不會等待文檔的解析。

<script src="script.js" async></script>

在上面的例子中,script.js 腳本會被異步加載,并且在加載完成后立即執(zhí)行,不會等待文檔的解析。這意味著腳本的執(zhí)行可能會在 DOM 樹構建完成之前開始,因此在使用 async 屬性時要注意可能出現的執(zhí)行順序問題。
使用 async 屬性的主要優(yōu)點是可以并行加載多個腳本,從而提高頁面加載速度。但需要注意的是,由于腳本的執(zhí)行時間不確定,可能會影響到頁面的渲染和其他操作。因此,適合使用 async 屬性的腳本通常是獨立的、不依賴于文檔解析順序的腳本。

3.動態(tài)創(chuàng)建DOM方式

要通過動態(tài)創(chuàng)建 DOM 的方式來實現對 JavaScript 腳本的延遲加載,可以使用 JavaScript 動態(tài)創(chuàng)建 <script> 元素,并設置其屬性來實現延遲加載效果。具體步驟如下:

  • 創(chuàng)建一個 <script> 元素。
  • 設置該 <script> 元素的 src 屬性為要延遲加載的 JavaScript 文件的 URL。
  • 如果需要,可以設置其他屬性,如 defer 或 async。
  • 將該 <script> 元素插入到文檔中,通常是插入到 <head> 或 <body> 元素中。

下面是一個示例代碼:

// 創(chuàng)建一個 <script> 元素
var scriptElement = document.createElement('script');
// 設置要延遲加載的 JavaScript 文件的 URL
scriptElement.src = 'script.js';
// 設置屬性以實現延遲加載,比如使用 defer 或 async
scriptElement.defer = true; // 或者使用 scriptElement.async = true;
// 將 <script> 元素插入到文檔中
document.head.appendChild(scriptElement); // 或者插入到 document.body

通過上述步驟,可以實現對 JavaScript 腳本的延遲加載,腳本會在文檔解析完成后才開始下載,并且在 DOMContentLoaded 事件觸發(fā)之前執(zhí)行,從而避免阻塞頁面的渲染和交互。

4.使用setTime延遲方法

使用 setTimeout 方法來對 JavaScript 腳本進行延遲加載是一種簡單直接的方式。通過 setTimeout 方法,可以在指定的時間間隔之后執(zhí)行一段 JavaScript 代碼,從而實現延遲加載效果。

下面是使用 setTimeout 方法來延遲加載 JavaScript 腳本的示例代碼:

// 使用 setTimeout 方法延遲加載 JavaScript 腳本
setTimeout(function() {
    // 創(chuàng)建一個 <script> 元素
    var scriptElement = document.createElement('script');
    // 設置要延遲加載的 JavaScript 文件的 URL
    scriptElement.src = 'script.js';
    // 將 <script> 元素插入到文檔中
    document.head.appendChild(scriptElement); // 或者插入到 document.body
}, 2000); // 2000 毫秒即 2 秒后加載

在上述代碼中,setTimeout 方法接受兩個參數:第一個參數是一個函數,用來定義要執(zhí)行的 JavaScript 代碼;第二個參數是延遲的時間,以毫秒為單位。在示例中,設置了一個延遲時間為 2000 毫秒(即 2 秒),在這之后會執(zhí)行匿名函數內的代碼,其中包括創(chuàng)建 <script> 元素并插入到文檔中,實現了對 JavaScript 腳本的延遲加載。

5.讓JS最后加載

將JS腳本放在文檔底部,來使JS腳本盡可能的在最后來加載執(zhí)行

到此這篇關于JavaScript腳本延遲加載有哪些方式的文章就介紹到這了,更多相關JavaScript腳本延遲加載內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript新窗口與子窗口傳值詳解

    JavaScript新窗口與子窗口傳值詳解

    這篇文章主要介紹了JavaScript新窗口與子窗口之間的傳值,需要的朋友可以參考下
    2014-02-02
  • js實現輪播圖的兩種方式(構造函數、面向對象)

    js實現輪播圖的兩種方式(構造函數、面向對象)

    這篇文章主要為大家詳細介紹了js實現輪播圖的兩種方式,一是構造函數、另一種是面向對象方式方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • FF和IE之間7個JavaScript的差異

    FF和IE之間7個JavaScript的差異

    盡管 JavaScript 歷史上使用冗長而令人生厭的代碼塊來標的特定瀏覽器的時期已經結束了,但是偶爾使用一些簡單的代碼塊和對象檢測來確保一些代碼在用戶機器上正常工作依然是必要的。
    2009-05-05
  • 詳解javascript腳本何時會被執(zhí)行

    詳解javascript腳本何時會被執(zhí)行

    這篇文章主要介紹了詳解javascript腳本何時會被執(zhí)行,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2021-02-02
  • JavaScript 閉包深入理解(closure)

    JavaScript 閉包深入理解(closure)

    最近在網上查閱了不少Javascript閉包(closure)相關的資料,寫的大多是非常的學術和專業(yè)。對于初學者來說別說理解閉包了,就連文字敘述都很難看懂。撰寫此文的目的就是用最通俗的文字揭開Javascript閉包的真實面目。
    2009-05-05
  • JS實現移動端判斷上拉和下滑功能

    JS實現移動端判斷上拉和下滑功能

    通過手指觸屏,利用touchstart和touchend計算前后滑動距離,判斷是上拉還是下滑。接下來通過實例代碼給大家介紹js移動端判斷上拉和下滑功能,感興趣的朋友一起看看吧
    2017-08-08
  • js鏈表操作(實例講解)

    js鏈表操作(實例講解)

    下面小編就為大家?guī)硪黄猨s鏈表操作(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解用js代碼觸發(fā)dom事件的實現方案

    詳解用js代碼觸發(fā)dom事件的實現方案

    這篇文章主要介紹了詳解用js代碼觸發(fā)dom事件的實現方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 微信小程序實現倒計時調用相機自動拍照功能

    微信小程序實現倒計時調用相機自動拍照功能

    這篇文章主要為大家詳細介紹了微信小程序實現倒計時調用相機自動拍照功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • JavaScript使用ul中l(wèi)i標簽實現刪除效果

    JavaScript使用ul中l(wèi)i標簽實現刪除效果

    這篇文章主要為大家詳細介紹了JavaScript使用ul中l(wèi)i標簽實現刪除效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04

最新評論