2017-08-08 74 views
0
不工作

我寫這段代碼這是工作完美的谷歌Chrome和Opera,但不工作的Firefox:D3圖表圖像下載在Firefox

function download() 
{ 
    var canvas = document.createElement("canvas"); 
    var svg=document.getElementsByTagName('svg')[0]; 
    svg1 = $(svg).parent().html(); 
    canvg(canvas, svg1); 
    var obj=document.getElementsByTagName("canvas"); 
    var a = document.createElement('a'); 
    // toDataURL defaults to png, so we need to request a jpeg, then convert for file download. 
    a.href = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); 
    a.download = 'chart.jpg'; 
    a.click(); 
} 

有什麼不對?請指導我。

回答

0

的一個在我的案子是

  d3.select("#savebutton").on("click", function(){ 
      var html = d3.select("svg") 
      .attr("version", 1.1) 
      .attr("xmlns", "http://www.w3.org/2000/svg") 
      .node().parentNode.innerHTML;  

    //console.log(html); 

var imgsrc = 'data:image/svg+xml;base64,'+ btoa(html); 
var image = new Image; 
image.src = imgsrc; 

image.onload = function() { 
var canvas = document.createElement('canvas'); 
canvas.width = image.width; 
canvas.height = image.height; 
var context = canvas.getContext('2d'); 
context.fillStyle = "#FFFFFF"; 
context.fillRect(0,0,image.width,image.height); 
context.drawImage(image, 0, 0); 

var a = document.createElement('a'); 
a.download = "sampleidvgraph.png"; 
a.href = canvas.toDataURL('image/png'); 
document.body.appendChild(a); 
a.click().attr('target', '_blank'); 
} 
});