Javascript html2canvas.js未捕获动态生成内容的图像
我正在使用vivagraphs生成动态svg元素,但当我单击“捕获”按钮时,不会显示任何节点和边 以下是脚本:Javascript html2canvas.js未捕获动态生成内容的图像,javascript,jquery,svg,html2canvas,Javascript,Jquery,Svg,Html2canvas,我正在使用vivagraphs生成动态svg元素,但当我单击“捕获”按钮时,不会显示任何节点和边 以下是脚本: $(document).ready(function() { //var testdiv = document.getElementById("testdiv"); $('#btn').click(function(){ html2canvas($("#graph1"), { onrendered: function(canvas) {
$(document).ready(function() {
//var testdiv = document.getElementById("testdiv");
$('#btn').click(function(){
html2canvas($("#graph1"), {
onrendered: function(canvas) {
var myImage = canvas.toDataURL("img/png");
window.open(myImage);
}
});
});
虽然我检查元素,但svg在呈现图形后显示,但快照不包含节点和边
是否有html2canvas的替代方案,或者我是否可以解决此问题?如果您想将图像从画布保存为某种图像格式,这里有一些帮助。希望这能帮到你
$(document).ready(function() {
$('#btn').click(function(){
html2canvas(document.getElementById('graph1'), {
onrendered: function(canvas) {
var cs = new CanvasSaver('save_img.php',canvas,'myimage')
}
});
});
});
下面是CanvasSaver()函数的定义,它有三个参数:一个是php文件,它将图像从原始日期处理为某种图像格式。我将在这个脚本部分编写“save_img.php”代码,并将该文件保存在根目录中
function CanvasSaver(url, cnvs, fname) {
this.url = url;
if(!cnvs || !url) return;
fname = fname || 'picture';
var data = cnvs.toDataURL("image/png");
data = data.substr(data.indexOf(',') + 1).toString();
var dataInput = document.createElement("input") ;
dataInput.setAttribute("name", 'imgdata') ;
dataInput.setAttribute("value", data);
dataInput.setAttribute("type", "hidden");
var nameInput = document.createElement("input") ;
nameInput.setAttribute("name", 'name') ;
nameInput.setAttribute("value", fname + '.jpg');
var myForm = document.createElement("form");
myForm.method = 'post';
myForm.action = url;
myForm.appendChild(dataInput);
myForm.appendChild(nameInput);
document.body.appendChild(myForm) ;
myForm.submit() ;
document.body.removeChild(myForm) ;
}
<?php
# we are a PNG image
header('Content-type: image/png');
# we are an attachment (eg download), and we have a name
header('Content-Disposition: attachment; filename="' . $_POST['name'] .'"');
#capture, replace any spaces w/ plusses, and decode
$encoded = $_POST['imgdata'];
$encoded = str_replace(' ', '+', $encoded);
$decoded = base64_decode($encoded);
#write decoded data
echo $decoded;
?>
在上面的脚本中,无论您想从浏览器中保存什么图像格式,请在上面的脚本函数中指定该图像扩展名
nameInput.setAttribute("value", fname + '.jpg');
下面是“save_img.php”的代码,并将其保存在根目录中
function CanvasSaver(url, cnvs, fname) {
this.url = url;
if(!cnvs || !url) return;
fname = fname || 'picture';
var data = cnvs.toDataURL("image/png");
data = data.substr(data.indexOf(',') + 1).toString();
var dataInput = document.createElement("input") ;
dataInput.setAttribute("name", 'imgdata') ;
dataInput.setAttribute("value", data);
dataInput.setAttribute("type", "hidden");
var nameInput = document.createElement("input") ;
nameInput.setAttribute("name", 'name') ;
nameInput.setAttribute("value", fname + '.jpg');
var myForm = document.createElement("form");
myForm.method = 'post';
myForm.action = url;
myForm.appendChild(dataInput);
myForm.appendChild(nameInput);
document.body.appendChild(myForm) ;
myForm.submit() ;
document.body.removeChild(myForm) ;
}
<?php
# we are a PNG image
header('Content-type: image/png');
# we are an attachment (eg download), and we have a name
header('Content-Disposition: attachment; filename="' . $_POST['name'] .'"');
#capture, replace any spaces w/ plusses, and decode
$encoded = $_POST['imgdata'];
$encoded = str_replace(' ', '+', $encoded);
$decoded = base64_decode($encoded);
#write decoded data
echo $decoded;
?>
您可能正在使用lib的beta版本,在html2canvas的github页面上发布goto,并下载稳定的alpha版本,是否考虑尝试?看看这个答案: