最近寫了基於 index 索引關聯進行切換的tab元件,誰知道頻繁點選後,幾個瀏覽器都卡死,連檢視 performance 都看不了。在嘗試幾次後,沒能在 chrome 的 performance下看到原因,因為卡的動不了。反而在 firefox 下看到原因了。
本地**業務邏輯大致如下
onetwo
three
通過上面按鈕點選,動態更改type,從而更新元件。但是由於點選時,不一定點選的是 div,有可能是 button,因而無論點選哪乙個都需要找到div,拿到data-type的引數。於是自己便寫了乙個查詢父元素的function。
function findtargetbyclassnameandtarget (target = {}, classname = '')
return el
}
初步點選時,並沒有任何問題,都能及時響應,但是快速頻繁之後就開始。firefox顯示這段js一直在執行。我也是醉了。於是換成了下面這樣的才得以解決。
function closest (ele, selector) else }}
return null
}
之前為了解決上訴問題,以為是頻繁地更新dom
,導致頁面重繪重排,從而效能有了影響。但是el-tab
卻沒有。看了下**沒有找到明顯的優化之處。然後嘗試給 點選事件加延遲,component
加keep-alive
。一樣沒有效果。因而以為是不是使用v-if
導致的。切換為v-show
進行處理依舊沒有效果。參考網上做法,開啟硬體加速transform: translatez(0)
依舊沒有任何效果,反而還引發其他問題(彈框的fixed定位不准)
因為tab切換引起的效能問題,網上有很多,我個人覺得這兩個將來值得借鑑一二,原理都是dom
更新完再進行。
加乙個開發,在dom更新完後再進行下一步
使用vue
的update
來進行處理。因為updated
也是dom
更新完再執行
針對上面的**,嘗試了之前寫的另一種方式
function findelementupward (el, classname)
return parent
}
依舊是沒問題。因而對比兩者的差距,只是這次取巧使用了自帶的contains
這個方法而已,卻沒想到導致這麼大的問題。只是目前還無法判斷是不是這個contains
導致的效能問題。需要找個方式進行研究一下方可。 切換瀏覽器tab重新整理實現
標籤 js 最近在做乙個活動需求,需求互動有跨專案,跳轉到另乙個專案裡完成指定任務,再回來領取相應任務獎勵,產品十分反感要求使用者主動重新整理瀏覽器才更新活動頁的任務資訊。document.addeventlistener visibilitychange function 當前視窗得到焦點 win...
js監聽瀏覽器tab視窗切換
js監聽瀏覽器tab視窗切換 it唐伯虎 摘要 js監聽瀏覽器tab視窗切換。if document.hidden undefined 用document.visibilitystate也行 其中,visibilitychange是h5的乙個事件 ie9不支援 可以通過這個事件來暫停css3動畫 暫...
瀏覽器回車模擬TAB鍵切換焦點
ie11和chrome瀏覽器都遵循w3c標準,w3c沒提供修改keycode值的方法,需要自己新增切換焦點的 以下兩種寫法ie6 ie11和chrome瀏覽器都支援。第一種寫法 input text on keydown function e return false 阻止回車預設事件,如提交表單 ...