国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js實現延遲加載的幾種方法詳解

2024-05-06 15:43:02
字體:
來源:轉載
供稿:網友

這是一個面試經常問到的問題:js的延遲加載方法 (js的延遲加載有助于提高頁面的加載速度)

主要考察對程序的性能方面是否有研究,程序的性能是一個項目不斷地追求的,通常也是項目完成后需要長期做的一件事情,像騰訊QQ依然對程序的性能不斷地做優化,讓用戶的體驗更好,性能優化的核心思想就是快,可以預先準備數據(如緩存的使用),可以按需獲取,可以分段獲取等都是常見的優化手段。

解題思路 :

1.defer屬性

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

瀏覽器會并行下載 file.js和其它有 defer 屬性的script,而不會阻塞頁面后續處理。defer屬性在IE 4.0中就實現了,超過10多年了!Firefox從 3.5 開始支持defer屬性 。

注:所有的defer腳本保證是按順序依次執行的。

2.async屬性

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

async屬性是HTML5新增的。作用和defer類似,但是它將在下載后盡快執行,不能保證腳本會按順序執行。它們將在onload 事件之前完成。

Firefox3.6、Opera 10.5、IE 9和 最新的Chrome 和 Safari 都支持 async 屬性。可以同時使用 async 和 defer,這樣IE 4之后的所有IE 都支持異步加載。

3.動態創建DOM方式 (使用的最多)

<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",downloadJSAtOnload);  else    window.onload = downloadJSAtOnload;</script>

PS: 這里插一句addEventListener() 也是常考的知識點之一:

    addEventListener() 方法用于向指定元素添加事件句柄。

    使用 removeEventListener() 方法來移除 addEventListener() 方法添加的事件句柄。

    語法:element.addEventListener(event, function, useCapture)

            event (必須)字符串,指定事件名。注意: 不要使用 “on” 前綴。 例如,使用 “click” ,而不是使用 “onclick”。         function (必須)指定要事件觸發時執行的函數。當事件對象會作為第一個參數傳入函數。 事件對象的類型取決于特定的事件。例如, “click” 事件屬于 MouseEvent(鼠標事件) 對象。         useCapture (可選)布爾值,指定事件是否在捕獲或冒泡階段執行。【true:事件句柄在捕獲階段執行; false:默認,事件句柄在冒泡階段執行】
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 福鼎市| 鄂尔多斯市| 沙田区| 闽侯县| 木兰县| 兴国县| 葵青区| 祁门县| 叙永县| 巢湖市| 成武县| 肥东县| 万盛区| 汤阴县| 罗平县| 平南县| 开平市| 新安县| 布尔津县| 锡林郭勒盟| 石河子市| 贵州省| 青阳县| 大竹县| 海口市| 四川省| 行唐县| 白河县| 徐州市| 鹿邑县| 米泉市| 靖远县| 安远县| 鞍山市| 辽宁省| 英山县| 甘谷县| 沙雅县| 甘谷县| 永平县| 阿坝县|