[1]我要实现的功能是用户填写完表单后,点击提交按钮,截图。截图放在一个弹层里面,给一句提示 ” 长按图片保存至手机 ”。
js 引入的是 bluebird.min.js 和 html2canvas.js
辗转写了这些代码,逻辑是点击按钮,截图,然后间隔一秒钟显示弹层。到这一步貌似实现功能。下面用真机测试遇到了两个问题:
有些手机已经出现了下载图片选项
但是点击下载图片图片下载不下来,没有一点动作。后来前辈给出指导说有些 css 属性是 html2canvas.js 这个插件不支持的,比如:before 属性,我把页面上用到的 before 属性全部替换后也不行,后来在 common.css 一行一行删样式,找到一个属性 body {overflow-x: hidden}, 把 overflow-x: hidden 去掉后是可以下载的,除了这两个属性,可能还有一些 css 不自持。
第二个问题,我用的手机是华为,用谷歌浏览器长按图片发现没有下载图片选项
这个问题也是问了前辈,说可能是截图的图片质量太大导致的,然后我尝试将截图范围缩小
缩小范围后是可以有下载图片选项,并且可以下载。
这是我使用插件遇到的一些问题。这篇文章的第三张和第四张图片是我顺手截图展示效果的,第一张和最后一张才是我项目中操作的图片。
这个功能在我的 QQ 浏览器和谷歌浏览器时可以实现功能的。但是发现华为自带的浏览器不支持。最后因为前端兼容性太差用了另外一种写法:后台处理好,把图片路径返回给前台,我就把图片路径放到指定位置。虽然最终方案没有使用 html2canvas.js,但我想把遇到的问题写出来,希望别人少走些弯路。