ios/macos safari15 html2canvas 導致頁面卡死問題

背景
前幾天有人反饋說使用ios/macos的safari預覽版打開保險頁面會崩潰,大家知道最近評估要發新品,這其中就包括safari15的發佈,不清楚15調整了啥導致的,但是問題就是這個問題。
 

排查

下載了safari15的預覽版進行了測試,不是所有頁面都卡死,經過對比把問題鎖定在了html2canvas這個插件上, 由於卡死的時候並沒有任何的報錯,這是最讓人頭疼的,排查起來就麻煩了很多,但是沒有辦法,眼看馬上就要發不了,只能使用笨方法,代碼刪除大法。
對會導致頁面卡死的代碼進行了遞歸2分法刪除,經過一頓的操作,得出一下結論。
  1. 原生的button會導致頁面的崩潰
  2. input 也會導致出問題。
以上的原因是隻是建立在我們卡死的頁面上得出的,肯定不是全部的問題。看到上面出問題的都是表單元素,我猜測應該是form相關的元素會導致 html2canvas出異常。

再次排查和解決方案

上面雖然知道是button和input導致的,問題是input也沒有替代方案,還需要追究原因,我下載了 html2canvas的源碼在本地跑起來測試,經過在對button和input的研究最終把問題定位到了font-family上,前端的同學都知道,表單元素會有很多默認設置,大家可以通過chrome或者safari去查看,問題也應該就是處在了這些默認設置上,我重設了font-family解決了問題。
input,button,select,textarea {
font-family:"字體"
}

 

字體是你項目中的字體,經過測試發現arial這個字體是會有問題的。我們項目的字體沒有觸發問題。

最後

我們雖然查到問題解決了問題,但是不是正統的解決方案,這塊我也提了issue給到html2canvas的作者了,從庫本身解決纔是最終的方案。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章