我的專案中有 20 多個 js 檔案,例如 jQuery 等,當我滾動它時,它會因為加載非常懶惰而掛起。如何找到哪個檔案產生了問題?
uj5u.com熱心網友回復:
這可能是幾件事之一,如果不看你的代碼,我不可能說出真正的原因是什么。你提出了一個非常主觀的評論。在除錯和解決問題方面沒有靈丹妙藥。
我一直發現奧卡姆剃刀方法最有效。
“當您洗掉所有其他選項時,剩下的無論多么不可能,都必須是問題/解決方案/答案。”
首先,在您開始洗掉 JS 檔案之前,您是否嘗試過對您的專案進行全面搜索.scroll?很可能有幾個在滾動上運行的函式會導致回流,這是此類代碼的常見問題。
評估代碼后,您可以使用 Google Chrome 中的“性能”選項卡來驗證代碼執行時究竟發生了什么(在此處了解如何使用“性能”選項卡)。您可以采取適當的措施。
假設您的代碼遇到了我在使用 jQuery 的成長歲月中遇到的相同問題 - 多個或有問題的滾動事件 - 您可以消除滾動完成后可以運行的事件。您可以使用以下模式執行此操作。
場景 1: 這會運行很多次。每次滾動滾輪拖動“N”次(取決于設定 - 我的是 10 次),甚至在使用滾動條時更多次。
function someFunc() {
let someArr = [];
for(var i = 0; i < 1000000; i {
someArr.push((i * 2));
}
for(var i = 0; i < someArr.length; i {
someArr[i] /= 0.25;
}
}
$(window).on("scroll", function() {
someFunc();
});
場景2:
這將在滾動完成后運行一次。在執行之前等待 200 毫秒,以確保用戶完全完成滾動。
function someFunc() {
let someArr = [];
for(var i = 0; i < 1000000; i {
someArr.push((i * 2));
}
for(var i = 0; i < someArr.length; i {
someArr[i] /= 0.25;
}
}
let debouncedTimeout = null;
$(window).on("scroll", function() {
if (debouncedTimeout) {
clearTimeout(debouncedTimeout);
}
debouncedTimeout = setTimeout(someFunc(), 200);
});
uj5u.com熱心網友回復:
在每個檔案中添加一個帶有數字 (check1, check2) 等的 console.log("Check") 。在瀏覽器中檢查您的控制臺,查看它們在控制臺中加載的系列。如果加載下一個日志需要一段時間,您就會知道它是帶有您記錄的編號的前一個檔案。
uj5u.com熱心網友回復:
您的控制臺應該說明一切。但是加載這么多js檔案是不好的做法。嘗試將所有內容合二為一,以便在進一步的后端開發中可以使用 .min.js 但如果您繼續這樣做。最簡單的方法是使用 console.log 跟蹤 funcioncesequences,這樣您就可以按照預期的方式作業:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/376997.html
標籤:javascript 查询 谷歌浏览器 jquery 事件 开发者工具
