html2canvas在Vue項目踩坑-生成圖片偏移不完整


背景

最近做一個Vue項目需求是用戶長按保存圖片,頁面的數據是根據不同id動態生成的,頁面渲染完生成內容圖片讓用戶長按保存的時候,把整個頁面都保存起來。

在項目遇到的坑是圖片能生成,可是生成的圖片總是往左偏移一部份內容,讓顯示的圖片不完整

頁面渲染的內容,而生成的圖片效果要跟頁面渲染的內容一致,下面是渲染的效果

 

 

 而實際生成的圖片是不完整的

 

測試:多次生成圖片發現圖片發生偏移的位置都不相同,而同一個特性是往左偏移。

工作原理:Html2canvas加載后將會瀏覽頁面上的所有元素,集合所有頁面元素的信息,頁面元素在vue渲染完成時Html2canvas把整個頁面(整屏)的內容生成base64的圖片。

猜想:vue生命周期渲染頁面未加載完html2canvas就生成圖片,->了解Vue生命周期

思考:既然是沒渲染完成就生成圖片,那就等vue頁面渲染完成再執行html2canvas生成圖片。

解決方案

在vue mounted周期利用setTimeout函數延遲執行html2canvas,這樣就避免vue頁面沒渲染完成就執行html2canvas

 

 mounted() { setTimeout(function () { this.toImage(); },1000); }

 

 

html2canvas這個插件存有bug略坑,總結了幾個遇到的坑及解決方法,待更新.....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM