首頁 > web前端 > js教程 > js實作延遲載入有幾種方式? js延遲載入的六種方式介紹

js實作延遲載入有幾種方式? js延遲載入的六種方式介紹

不言
發布: 2018-08-22 11:37:01
原創
2574 人瀏覽過

本篇文章帶給大家的內容是關於js實作延遲載入有幾種方式? js延遲載入的六種方式介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

JS延遲加載,也就是等頁面加載完成之後再加載 JavaScript 檔案。 
JS延遲載入有助於提高頁面載入速度。
一般的幾個方法如下:

defer 屬性
async 屬性
動態建立DOM方式
使用jQuery的getScript方法
使用setTimeout延遲方法
讓JS最後載入

1、defer屬性
HTML 4.01 為<script>標籤定義了defer屬性。 
用途:表示腳本在執行時不會影響頁面的建構。也就是說,腳本會被延遲到整個頁面都解析完畢之後再執行。

<script> 元素中設定 defer 屬性,等於告訴瀏覽器立即下載,但延遲執行。

<!DOCTYPE html>
<html>
<head>
    <script src="test1.js" defer="defer"></script>
    <script src="test2.js" defer="defer"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>
登入後複製

說明:雖然<script> 元素放在了<head>元素中,但包含的腳本將延遲瀏覽器遇到 </html>標籤後再執行。

HTML5規格要求腳本按照它們出現的先後順序執行。在現實當中,延遲腳本並不一定會依照順序執行。

defer屬性只適用於外部腳本檔案。支援 HTML5 的實作會忽略嵌入腳本設定的 defer屬性。

2、async屬性

#HTML5 為<script>標籤定義了async屬性。與defer屬性類似,都用來改變處理腳本的行為。同樣,只適用於外部腳本檔案。  
目的:不讓頁面等待腳本下載和執行,從而非同步載入頁面其他內容。

非同步腳本一定會在頁面 load 事件前執行。 
不能保證腳本會依序執行。

<!DOCTYPE html>
<html>
<head>
    <script src="test1.js" async></script>
    <script src="test2.js" async></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>
登入後複製

async和defer一樣,都不會阻塞其他資源下載,所以不會影響頁面的載入。
缺點:無法控制載入的順序

3、動態建立DOM方式

//这些代码应被放置在</body>标签前(接近HTML文件的底部)
<script type="text/javascript">
    function downloadJSAtOnload() {
        var element = document.createElement("script");
        element.src = "defer.js";
        document.body.appendChild(element);
    }    
    if(window.addEventListener)
        window.addEventListener("load",downloadJSAtOnload,false);    
        else if(window.attachEvent)
        window.attachEvent("onload",downloadJAAtOnload);    
        else
        window.onload = downloadJSAtload;</script>
登入後複製

4.使用jQuery的getScript ()方法

$.getScript("outer.js",function(){  
//回调函数,成功获取文件后执行的函数
    console.log("脚本加载完成")
});
登入後複製

5.使用setTimeout延遲方法

6.讓JS最後載入

##相關推薦:

延遲載入JavaScript

Javascript中關於圖片的延遲載入詳解

JavaScript圖像延遲載入庫Echo.js_javascript技巧

以上是js實作延遲載入有幾種方式? js延遲載入的六種方式介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板