前端海报,微信长按保存图片错误

前端海报,微信长按保存图片错误

一次项目中遇到的,

操作

前端从活动详情页,跳转到生成海报的页面;顺利生成海报;然后长按进行保存图片操作,

结果

发现出来的图片居然是上个详情页的跳转图片,不信邪,反复试验,发现确实存在这种情况,而且不单单是上个页面,海报页有时也会发生长按保存的图片非目标图片。

上图

这是我的活动详情页,右上角“邀请好友”的按钮是一个图片元素!!!!!

这是生成之后的海报的样式,实际的海报在它上面浮着,只是透明度opacity:0
纳尼,我怎么长按之后,把这货给保存了???
嗯???有时保存的居然是这货???

问题概括

总的来说,就是微信长按保存时,有时会保存非目标图片。

问题分析

代码逻辑不存在问题,开始以为是层级问题,遂将生成的海报层级设置为最高,但是问题仍没有解决;
然后有猜测是否在长按保存时,海报还未生成,遂加延迟,仍无效;
反复测试后发现,海报生成后,手指只要触摸过生成的海报,则接下来长按,就会顺利保存成想要的图片,海报被成功保存。
到了这里,我不禁有了一个猜测,是否微信的长按保存跟你上一次接触的图片有很大关系啊?就类似于a标签,当你点击过之后会有一个active的属性一样;类似的,微信长按保存,可能也会给你点击的图片附加类似“active”的属性,方便微信在长按事件中,获取对应的“active”的图片。于是我就对应试了一下,发现好像是这么回事儿。

问题解决

问题已经找到了,接下来就是解决了——————pointer-events:none;
这个css属性它能够:

阻止用户的点击动作产生任何效果
阻止缺省鼠标指针的显示
阻止CSS里的hover和active状态的变化触发事件
阻止JavaScript点击动作触发的事件

刚好符合目前遇到的问题。
将不相关的图片元素都加上这个css属性,这样就能够避免其他图片元素,对海报的影响了。
试了之后果然可以解决目前的问题

附加说明

我的海报逻辑是:
1,显示的是正常的html元素;
2,将相应的html通过html2canvas生成海报;
3,将生成的海报定位在显示的html元素上方,设置透明度为0,这样用户在长按保存时就是相当于对浮在上面的海报进行保存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值