分享一個小發(fā)現(xiàn)
這里首先直接說結(jié)論:
????????由于html2canvas生成圖片的過程會從html的head、body層標(biāo)簽開始遍歷,所以對于項目較大,但是只需要對某個dom(下文以D稱呼)生成圖片的情況非常不友好!
????????所以,一定要通過ignoreElements過濾掉大部分沒用的標(biāo)簽。
? ? ? ? 至于怎么過濾,我用了dom方法comparedocumentposition(如果有更好的辦法可以在評論區(qū)分享一下),先用上述方法判斷當(dāng)前遍歷的element與D是否有父子關(guān)系,有關(guān)系則不忽略,沒關(guān)系的話還要判斷是否head標(biāo)簽和樣式的link標(biāo)簽和style標(biāo)簽(如style標(biāo)簽較多的話可以考慮對style也按需忽略),其余標(biāo)簽可以忽略。如果D里有滾動的話,還要通過對element的offsetTop判斷在可視范圍外則忽略。
? ? ? ? 由于html2canvas需要通過拿到的style來計算圖片里的顯示樣式,所以需要保留部分需要的style標(biāo)簽,并留一下生成的圖片樣式會不會有問題。文章來源:http://www.zghlxwxcb.cn/news/detail-537819.html
????????這樣下來效率會得到質(zhì)的提升!對于我的現(xiàn)狀來說,一個又長又臭的破elUI表格從20秒提升到1秒,很nice!文章來源地址http://www.zghlxwxcb.cn/news/detail-537819.html
到了這里,關(guān)于解決前端html2canvas生成圖片慢問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!