html2canvas 在 IOS 微信中绘图白屏黑屏问题

2024-05-24 23:48

本文主要是介绍html2canvas 在 IOS 微信中绘图白屏黑屏问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目中需要在微信中生成海报图,用户长按海报图后可以将图片发送给微信好友或保存到本地;

海报图在前端使用html2canvas 1.0.0-rc5生成,布局先使用一个高度为0并添加overflow: hidden的div作为外部容器,并将需要绘制的dom作为子元素放进去,实现绘制dom对用户不可见,大致代码如下:

<div style="height: 0;overflow: hidden;"><div ref="canvasDiv">待绘图的DOM</div>
</div>

html2canvas代码如下:

html2canvas(this.$refs.canvasDiv, {imageTimeout: 0, allowTaint: true, useCORS: true
}).then((canvas) => {let png = Canvas2Image.convertToJPEG(canvas, canvas.width, canvas.height);this.img = png.src
})

问题

上面的代码,在PC和安卓上运行没有任何问题,但是在IOS上,会出现绘制的图片白屏;

解决:

1:先替换html2canvas版本为1.0.0-rc3
2:在使用html2canvas方法绘图前,添加 window.scrollTo(5, 0)

window.scrollTo(5, 0)
html2canvas(this.$refs.canvasDiv, {imageTimeout: 0, allowTaint: true, useCORS: true,x: 0, // 因为上面使用window.scrollTo方法将页面向右滚动了5px,所以需要通过该设置来防止生成的图片左边出现白边
}).then((canvas) => {let png = Canvas2Image.convertToJPEG(canvas, canvas.width, canvas.height);this.img = png.src
})

总结:

这个问题个人觉得是一个很奇葩的问题,为什么通过设置滚动可以修复这个BUG也完全不清楚,网络上看各位大佬解决都是将滚动设置为0,而我这儿却是需要设置为非0

如果有哪位大佬知道原因,还请留言告知一下

这篇关于html2canvas 在 IOS 微信中绘图白屏黑屏问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999883

相关文章

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,