html2canvas 屏幕截图一直显示为空白
html2canvas screenshot keeps turning up blank
我正在尝试截取淡紫色线右侧的图像(因此在标题 "today's outfit" 下方(屏幕截图如下所示)。
我正在使用 html2canvas 来执行此操作,但每次单击 "snapshot" 按钮时,我都会得到一个空白的屏幕截图。
这是我的 HTML:
<div id="sidebar"><br/><center><h1 class = "outfitheading">Today's Outfit</h1></center>
<div id = "outfit">
<center><div class = "clothediv" id = "hatdiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id= "semitopdiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id = "topdiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id = "legweardiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id = "shoediv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
</div>
<button onclick="takeScreenShot()">Snapshot</button>
<center><div id= "likebutton" style = "display:none; visibility: hidden">
<a href = "#" ><i id = "outlinehearticon" class="fa fa-heart-o fa-2x" aria-hidden="true" onclick = {fillHeart()}></i></a>
<a href = "#" ><i id = "filledhearticon" class="fa fa-heart fa-2x" aria-hidden="true" style = "display:none; visibility: visible" onclick = {unfillHeart()}></i></a>
<script>
$(document).ready(function(){
$('[data-toggle="popover"]').popover();
});
</script>
</div></center>
<br/>
<br/>
<div class = "buttons"><center>
<button class = "btn btn-lg btn-secondary generatebutton" style = "display: inline-block" type = "button" id= "generateoutfitbutton" onclick = {generateOutfit()}>Generate Outfit</button>
<!--<p><center>or</center></p>-->
 
 
<button class = "btn btn-lg btn-secondary collagebutton" style = "display: inline-block" type = "button" id= "collagebutton" onclick = {clearCanvas()}>Make your Own</button></center>
</div>
</div>
这是我的 javascript:
var takeScreenShot = function() {
html2canvas(document.getElementById("outfit"), {
onrendered: function (canvas) {
var tempcanvas=document.createElement('canvas');
tempcanvas.width=465.5;
tempcanvas.height=524;
var context=tempcanvas.getContext('2d');
context.drawImage(canvas,465.5,40,465.5,524,0,0,465.5,524);
var link=document.createElement("a");
link.href=tempcanvas.toDataURL('image/jpg'); //function blocks CORS
link.download = 'screenshot.jpg';
link.click();
}
});
}
这是我的代码的 shortened-down jsfiddle:
https://jsfiddle.net/e51yepcz/
有谁知道为什么快照不起作用或我该如何修复它?谢谢
我编辑了您的 fiddle 并收到以下错误:
Uncaught ReferenceError: takeScreenShot is not defined
所以我改变了一些东西并且似乎有效。
我为你的按钮添加了一个 id:
<center><button id="snap">Snapshot</button></center>
和 javascript 事件 (jQuery):
$('#snap').click(function () {
html2canvas(document.getElementById("outfit"), {
onrendered: function(canvas) {
var tempcanvas = document.createElement('canvas');
tempcanvas.width=465;
tempcanvas.height=524;
var context=tempcanvas.getContext('2d');
context.drawImage(canvas,465,40,465,524,0,0,465,524);
var link=document.createElement("a");
link.href=canvas.toDataURL('image/jpg');
link.download = 'screenshot.jpg';
link.click();
}
});
});
这是JsFiddle
我正在尝试截取淡紫色线右侧的图像(因此在标题 "today's outfit" 下方(屏幕截图如下所示)。
这是我的 HTML:
<div id="sidebar"><br/><center><h1 class = "outfitheading">Today's Outfit</h1></center>
<div id = "outfit">
<center><div class = "clothediv" id = "hatdiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id= "semitopdiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id = "topdiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id = "legweardiv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
<center><div class = "clothediv" id = "shoediv" class="dropzone" ondrop="drop(event)" ondragover="allowDrop(event)">
</div></center>
</div>
<button onclick="takeScreenShot()">Snapshot</button>
<center><div id= "likebutton" style = "display:none; visibility: hidden">
<a href = "#" ><i id = "outlinehearticon" class="fa fa-heart-o fa-2x" aria-hidden="true" onclick = {fillHeart()}></i></a>
<a href = "#" ><i id = "filledhearticon" class="fa fa-heart fa-2x" aria-hidden="true" style = "display:none; visibility: visible" onclick = {unfillHeart()}></i></a>
<script>
$(document).ready(function(){
$('[data-toggle="popover"]').popover();
});
</script>
</div></center>
<br/>
<br/>
<div class = "buttons"><center>
<button class = "btn btn-lg btn-secondary generatebutton" style = "display: inline-block" type = "button" id= "generateoutfitbutton" onclick = {generateOutfit()}>Generate Outfit</button>
<!--<p><center>or</center></p>-->
 
 
<button class = "btn btn-lg btn-secondary collagebutton" style = "display: inline-block" type = "button" id= "collagebutton" onclick = {clearCanvas()}>Make your Own</button></center>
</div>
</div>
这是我的 javascript:
var takeScreenShot = function() {
html2canvas(document.getElementById("outfit"), {
onrendered: function (canvas) {
var tempcanvas=document.createElement('canvas');
tempcanvas.width=465.5;
tempcanvas.height=524;
var context=tempcanvas.getContext('2d');
context.drawImage(canvas,465.5,40,465.5,524,0,0,465.5,524);
var link=document.createElement("a");
link.href=tempcanvas.toDataURL('image/jpg'); //function blocks CORS
link.download = 'screenshot.jpg';
link.click();
}
});
}
这是我的代码的 shortened-down jsfiddle: https://jsfiddle.net/e51yepcz/
有谁知道为什么快照不起作用或我该如何修复它?谢谢
我编辑了您的 fiddle 并收到以下错误:
Uncaught ReferenceError: takeScreenShot is not defined
所以我改变了一些东西并且似乎有效。
我为你的按钮添加了一个 id:
<center><button id="snap">Snapshot</button></center>
和 javascript 事件 (jQuery):
$('#snap').click(function () {
html2canvas(document.getElementById("outfit"), {
onrendered: function(canvas) {
var tempcanvas = document.createElement('canvas');
tempcanvas.width=465;
tempcanvas.height=524;
var context=tempcanvas.getContext('2d');
context.drawImage(canvas,465,40,465,524,0,0,465,524);
var link=document.createElement("a");
link.href=canvas.toDataURL('image/jpg');
link.download = 'screenshot.jpg';
link.click();
}
});
});
这是JsFiddle