;(function(){
var script1 = document.createElement("script");
script1.setAttribute("src","https://c53hzn.github.io/mylib/html2canvas.min.js");
document.body.appendChild(script1);
})();
;(function(){
html2canvas(document.body).then(function(canvas) {
var timeNow = new Date();
dataURL = canvas.toDataURL("image/png");
var pic = dataURL;
canvas.style.display = "none";
document.body.appendChild(canvas);
//使新生成的图片自带下载链接
var link = document.createElement("a");
link.setAttribute("href",pic);
//下载的文件名称
var fileName = "capture" + timeNow.getFullYear() + "-" + (timeNow.getMonth() + 1) + "-" + timeNow.getDate();
link.setAttribute("download",fileName);
var img = document.createElement("img");
img.setAttribute("src",pic);
img.setAttribute("id","outputImg");
link.appendChild(img);
link.style.display = "none";
document.body.appendChild(link);
//模拟单击事件,触发下载行为
document.getElementById("outputImg").click();
});
})();
;(function(){
var timeNow = new Date();
var body = document.getElementsByTagName("body")[0];
var bodyMarginLeft = body.style.marginLeft;
var w = body.style.width + bodyMarginLeft;
var h = body.style.height;
/*要将canvas的宽高设置成容器宽高的2倍start*/
var canvas = document.createElement("canvas");
canvas.width = w * 2;
canvas.height = h * 2;
canvas.style.width = w + "px";
canvas.style.height = h + "px";
/*要将canvas的宽高设置成容器宽高的2倍end*/
var context = canvas.getContext("2d");//然后将画布缩放,将图像放大两倍画到画布上
context.scale(2,2);
html2canvas(document.body,{ // $()括号里是你要复制生成canvas的区域,可以自己选
canvas: canvas,
onrendered:function(canvas){
dataURL =canvas.toDataURL("image/png");
var pic = dataURL;
//使新生成的图片自带下载链接
var link = document.createElement("a");
link.setAttribute("href",pic);
//下载的文件名称
var fileName = "capture" + timeNow.getFullYear() + "-" + (timeNow.getMonth() + 1) + "-" + timeNow.getDate();
link.setAttribute("download",fileName);
var img = document.createElement("img");
img.setAttribute("src",pic);
img.setAttribute("id","outputImg");
link.appendChild(img);
document.body.appendChild(link);
//模拟单击事件,触发下载行为
document.getElementById("outputImg").click();
}
});
})();
下载链接的思路来自这里
截图放大思路来自这里
总是截出来300x150尺寸的解决办法看这里
模拟单击事件参考了这里
此插件对border-radius、transform rotate、transform skew都不友好,凡是有这些的都会变形,如果页面上有视频元素,则无法截出来