美文网首页
vue-html2canvas插件

vue-html2canvas插件

作者: zouCode | 来源:发表于2020-05-23 17:44 被阅读0次

移动端项目需要生成海报,找了挺久的插件,还是选择了html2canvas,不用画canvas,直接写html生成canvas,简单,且强大,最后还是跪在图片跨域上,差点起不来。虽然这个插件图片跨域网上已经有很多答案,但试过都不行,好在各种查资料总算解决了,记录一下

项目情况说明

在商品详情页面中生成海报:

  1. 商品详情有商品主图(以下简称:商品主图)
  2. 生成canvas的html中的海报图片使用的是第一张商品主图(以下简称:海报主图)

问题产生过程

  1. 主图是网络图片,html2canvas调用发生跨域报错
  2. 给海报主图添加crossOrigin='anonymous'属性,发现连图片都不显示了
  3. 给海报主图url后添加时间戳,取消crossOrigin='anonymous'属性,结果调用html2canvas,还是发生跨域
  4. 如果可视区域移过了html2canvas需要截图的节点区域,会出现截不全,或者截图空白
  5. 第一次截图跨域的图片还是一片空白,打印仍然是这图片报错,第二次,第三次....正常生成海报不会报错

问题解决过程

1、让后台直接去配置运行图片所在的域名允许移动端发起的跨域
2、查阅资料,发现添加crossOrigin='anonymous'属性是没错的,错在海报主图使用的是缓存中的图片(商品主图已经加载过了)
3、给海报主图url后添加了时间戳,完美解决
4、触发生成之前将页面滚动到需要截图的节点上面
5、打开页面自己先主动调用一次生成,之后用户调用生成时将生成海报链接存起来,之后再点击只取生成的链接就行

代码

<!-- 轮播 -->
<Swiper :data="dataInfo.pics" :interval="5000" :height="225"/>

<!-- 海报主图部分 -->
<div ref="poster" id="poster">
    ...
    <div class="poster-img">
        <img :src="dataInfo.pics[0].url | getNewUrl" crossOrigin='anonymous'>
    </div>
    ...
</div>

...
// 过滤器
filters: {
    getNewUrl(url) {
      return `${url}?v=${new Date().getTime()}`
    },
},
...

效果展示

效果展示.gif

相关文章

  • vue-html2canvas插件

    移动端项目需要生成海报,找了挺久的插件,还是选择了html2canvas,不用画canvas,直接写html生成c...

  • React配置过程中用到的插件汇总

    ●react插件●react-dom插件●react-router插件●react-redux插件●babel插件...

  • iOS项目实战02

    修改插件:查找插件 -> 插件路径(不能记) -> Xcode插件开发 -> 查看插件代码 -> 搜索instal...

  • 5.文档 - gitbook - 插件

    参考 官方插件 重点参考 GitBook 插件 常用插件 配置插件 到 官方插件 上找合适的插件 在配置文件中安装...

  • FCPX系列的插件怎么安装导入?Final cut pro x插

    fcpx插件怎么安装? Fcpx插件怎么解压安装?fcpx插件怎么卸载?fcpx插件怎么添加?fcpx lut插件...

  • Cordova 插件更新

    查看项目插件列表 移除插件 添加插件

  • IDEA破解

    配置插件 配置仓库 下载插件 使用插件

  • Cordova 本地插件

    1 安装插件环境 2 创建插件 例子 添加配置 进入插件文件夹下初始化插件 插件使用

  • Webpack入门之plugins篇

    入门篇主要先学学插件的使用,不涉及自定义插件。 首先 插件分为:内置插件和外部插件。 内置插件例如BannerPl...

  • Gradle中插件的使用

    目录 插件的类型 插件的类型分为:1.脚本插件2.二进制插件 插件的使用 1.脚本插件的使用 脚本插件的使用方法如...

网友评论

      本文标题:vue-html2canvas插件

      本文链接:https://www.haomeiwen.com/subject/rorlahtx.html