博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用html2canvas实现超出浏览器部分截图
阅读量:5807 次
发布时间:2019-06-18

本文共 1967 字,大约阅读时间需要 6 分钟。

之前写过一篇关于  的文章,后面发现还有个坑在等着我,就是如果合成图片太大,超出了浏览器的可视区域,那么超出部分是无法截图的。在网上找到了以下方法,亲测有效~

源码:

return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {        if (typeof(options.onrendered) === "function") {            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");            options.onrendered(canvas);        }        return canvas;    });

如下图:

 

修改为(红色为改动部分):

//解决BUG 对于部分不能截屏不能全屏添加自定义宽高的参数以支持    var width = options.width != null ? options.width : node.ownerDocument.defaultView.innerWidth;    var height = options.height != null ? options.height : node.ownerDocument.defaultView.innerHeight;    return renderDocument(node.ownerDocument, options, width, height, index).then(function (canvas) {        if (typeof(options.onrendered) === "function") {            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");            options.onrendered(canvas);        }        return canvas;    });

如下图:

 

调用:

$(".js_show_promote").click(function () {            if(!$(this).hasClass("open")){                var thisCapture = $(this).find(".js_moneyCode_capture"); //需要捕获的区域                setTimeout(function(){imgToCanvas(thisCapture);},500);            }        });        function imgToCanvas(captureArea) {            var captureWidth = $(captureArea).outerWidth(),                captureHeight = $(captureArea).outerHeight();            html2canvas($(captureArea), {                height: captureHeight,                width: captureWidth,                onrendered: function (canvas) {                    $(".js_moneyCode_picSmall").attr("src",canvas.toDataURL()).show();                    $(".js_pic_loading").remove();                    $(".js_down_moneyCode_pic").attr("href",canvas.toDataURL());                }            });        }

方法已介绍完毕~特别感谢~提供的解决方案~关于其他更多的坑,可以看看

 

转载地址:http://enubx.baihongyu.com/

你可能感兴趣的文章
DEV-C++ 调试方法简明图文教程(转)
查看>>
参加婚礼
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
MySQL 备份与恢复
查看>>
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>
02-创建hibernate工程
查看>>
Scrum之 Sprint计划会议
查看>>
svn命令在linux下的使用
查看>>
Gradle之module间依赖版本同步
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>