国产探花免费观看_亚洲丰满少妇自慰呻吟_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:默認,事件句柄在冒泡階段執行】
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 潮州市| 承德县| 康定县| 孝昌县| 公安县| 滦南县| 南阳市| 商南县| 武定县| 隆林| 阜新市| 崇义县| 阳信县| 珲春市| 萍乡市| 西乌珠穆沁旗| 中西区| 阳高县| 西昌市| 文安县| 龙岩市| 保靖县| 积石山| 崇阳县| 会同县| 炉霍县| 保山市| 神池县| 丰镇市| 阜阳市| 隆回县| 永州市| 大埔区| 玉门市| 巧家县| 恭城| 河东区| 江都市| 宝丰县| 洪湖市| 荆门市|