问题

首先说说遇到了什么问题。首先有这么一个需求。需要前端根据后端传过来数据,动态的生成图片。图片中的文案、背景图片、用户头像全部都是通过后端的接口获取。但是使用 html2canvas 生成的canvas有些图片成功的在canvas里生成了。但是有些图片无论如何都显示不出来。

官方文档

在项目里面操作了半天未果,google了半天未果。此时有些许绝望。突然想到了,为什么不去它的 官网 看看呢。于是乎我在官网上看到了下面的内容。

Limitations

All the images that the script uses need to reside under the same origin for it to be able to read them without the assistance of a proxy. Similarly, if you have other canvas elements on the page, which have been tainted with cross-origin content, they will become dirty and no longer readable by html2canvas.

The script doesn't render plugin content such as Flash or Java applets.

讲的啥呢,这里为英文不好的同学翻译一下。英语好的可以直接看上文。大概的意思就是在html2canvas里面,是使用脚本去操作的,也就是说使用脚本把html转换成canvas,但是有一个限制,那就是不能使用跨源的图片。如果使用了,html2canvas将不会读取资源。

这也就是为什么转换出来的canvas有些图片一直是空白的原因。如果页面中有其他的canvas也使用了跨源的图片资源,html2canvas都不会去读取。

解决方案

对静态资源做一次转发并且在html2canvas的 配置 里面允许加载跨源资源,就可以了。

2018年8月1日更新

在调试的时候console信息,发现html2canvas自带的log太多,眼花缭乱的。大家可以自行配置取消掉。

html2canvas第一个参数就是你需要转换成canvas的dom节点。第二个参数接受一个对象,里面就是各种配置文件。配置项可以看 这里

{ logging: false }

配置成上面这样,就可以取消html2canvas默认开启的log了。

最新文章

  1. Oracle10g在Win2008R2下因版本无法安装问题的解决
  2. Samba配置
  3. OC之0801
  4. css背景图片定位练习(二): background-position的百分比
  5. IOS5基础教程之一-----如何创建XCode项目
  6. mybatis--MapperProxy事务
  7. linux解压zip、bz、bz2、z、gz、tar(解包)
  8. PHP 获取远程文件的大小的3种方法
  9. 记录一次mount问题
  10. Spring 3.0就这么简单读书笔记
  11. cocos2dx CCLayerColor和CCLayerColor
  12. springmvc中的几个问题
  13. jenkins2 -pipeline 常用groovy脚本
  14. ajax 调用 .net core WebAPI,报错 400 (Bad Request) Unexpected character encountered while parsing value
  15. js统计字数
  16. Microsoft Speaker Recognition API
  17. HttpClient学习记录-系列1(tutorial)
  18. (Gorails)vuejs系列视频: Webpacker/vue-resource(不再为官方推荐)。
  19. eg_5
  20. Docker 使用指南 (五)—— Dockerfile 详解

热门文章

  1. 在 ASP.NET Core 中发送邮件遇到的坑_学习笔记
  2. "车羊门问题"作业
  3. GitHub学习途径
  4. 【翻译】Flume 1.8.0 User Guide(用户指南) Sink
  5. Django forms表单 select下拉框的传值
  6. temp-重庆银行
  7. 利用AnyProxy代理监控APP流量
  8. JAVA 8 日期工具类
  9. 手机端-万种bt在线观看器,安卓正版下载!
  10. c++实现对windwos 下socket 的封装(实现封包及拆包处理)