JavaScript中短時間高頻次觸發事件的最佳化
在瀏覽器中,如果在短時間內多次觸發可以改變DOM樹結構的事件,可能導致頁面機構出現混亂甚至瀏覽器的崩潰。最近在做專案中,我無意中遇到一個問題,當滾到條到達某個高度時,使相應的元素從無到有,但是每次重新整理頁面後第一次到達時,滑鼠滾輪都會停頓下來,經過詢問老師和上網搜尋,發現是監聽捲軸事件造成的,因為捲軸動了一點,就會觸發很多次監聽事件,而且時間是極短的;所以就會造成瀏覽器也來不及反應,要卡在那一會。
後來我總結了幾種解決方法。
一、函式節流
透過函式阻止相同的時間在較短 時間連續觸發
這裡透過200ms的延遲,當下次時間需要執行的時候,如果沒超過200ms,會先清除原來的延時器,從新開始定時;這樣可以保證兩次相同的時間最少間隔在200ms以上。
二、防抖函式
防抖函式使在短時間內多次執行的事件合併成了一個時間在延遲時間後執行;
三、使用 rAF(requestAnimationFrame)
此函式是瀏覽器原生方法,有固定的頻率,每秒執行60次函式,這樣在上次函式還沒結束前,下次函式不會呼叫執行。雖然這個方法效能更最佳化,但是此方法在時間上不能控制。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2778781/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript 事件觸發以後函式指定時間後再執行JavaScript事件函式
- JavaScript 模擬事件觸發JavaScript事件
- javascript如何獲取觸發事件的物件JavaScript事件物件
- javascript實現的同時按下ctrl和其他鍵觸發事件JavaScript事件
- javascript避免dom事件重複觸發JavaScript事件
- js實現的指定時間後觸發事件程式碼例項JS事件
- 原生javascript如何獲取觸發事件的物件JavaScript事件物件
- Fastclick 導致click事件觸發兩次的問題AST事件
- javascript的img圖片IE下onload事件第二次無法觸發JavaScript事件
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- DOM操作小練習-觸發事件獲取系統時間的程式碼原理事件
- 10個常見觸發IO瓶頸的高頻業務場景
- 有趣的觸發器事件觸發器事件
- 取消事件觸發事件
- 批量更新時無法觸發事件的解決方法事件
- 【PB】事件的觸發時機及先後順序事件
- 閉包的使用-高頻事件優化事件優化
- LCP 08. 劇情觸發時間
- WebSocket的事件觸發機制Web事件
- Android觸控事件(下)——事件的分發Android事件
- 前端高頻面試題JavaScript篇前端面試題JavaScript
- 你若觸發,我就處理——淺談JavaScript的事件響應JavaScript事件
- 你若觸發 我就處理——淺談JavaScript的事件響應JavaScript事件
- 分散式系統解耦模式:用事件代表時間觸發Cron計劃任務分散式解耦模式事件
- touch事件和click事件多次觸發的問題事件
- JavaScript 計時事件JavaScript事件
- 使用 jQuery 觸發 Vue 事件jQueryVue事件
- 取消事件觸發(妙啊)事件
- jQuery select 觸發事件jQuery事件
- oracle 觸發器 client 事件Oracle觸發器client事件
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- JavaScript 的時間消耗JavaScript
- WPF 前臺觸發器實時獲取當前時間觸發器
- 通過程式碼控制View的觸控事件被觸發View事件
- 一段實現HTML頁面內定期觸發事件的JavaScript程式碼HTML事件JavaScript
- HTML事件的控制元件觸發 (轉)HTML事件控制元件
- js 建立和觸發事件 和 自定義事件JS事件
- 如何觸發react input change事件React事件