B_qxzb 2015-11-17 07:45 采纳率: 0%
浏览 18149
已结题

html2canvas截图如何解决跨域的问题?

1、问题描述
如果不跨域的话,截图正常。

如果有跨域的图片,那么js报错,报错信息如下:
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

2、代码

 /**
 * 截图
 */
function doScreenShot(){
    html2canvas(document.body, {
        onrendered: function(canvas) {
            canvas.id = "mycanvas";      
            var image =canvas.toDataURL("image/png").replace("image/png","image/octet-stream");
            window.location.href=image; // it will save locally
        }
    });
}

3、补充
看到官方(https://github.com/niklasvh/html2canvas)上面有介绍代理啥的,也没看明白怎么使用,好像还没有java方面的代理。有人能补充一下这方面的使用介绍么?

或者有其他的web页面截图方面的方法也可以介绍下,谢谢~


附:
html2canvas
1、官网
https://github.com/niklasvh/html2canvas
2、这个是别人发的提问帖子,问的同样的问题,提问的人说他问题已经解决了,我他妈楞是没看懂啊http://stackoverflow.com/questions/9825962/how-to-use-html2canvas-proxy

  • 写回答

6条回答 默认 最新

  • lxm_start 2016-09-27 07:32
    关注

    在html2canvas.js源代码的 loadImage方法里添加 img.crossOrigin = "anonymous";
    原来是 if (src && images[src] === undefined) {
    img = new Image();
    if (src.match(/data:image\/.*;base64,/i)) {
    改为 if (src && images[src] === undefined) {
    img = new Image();
    img.crossOrigin = "anonymous";
    if (src.match(/data:image\/.*;base64,/i)) {

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘