2014-01-15 30 views
0

我一直在觀察如何在不調用服務器的情況下導出圖表Highcharts,並且發現它可以使用函數canvas.toDataURL完成問題是我無法爲該文件命名。highcharts來自畫布的文件名

該函數如下:

(function (H) { 
H.Chart.prototype.createCanvas = function (tipo) { 
    var svg = this.getSVG(), 
     width = parseInt(svg.match(/width="([0-9]+)"/)[1]), 
     height = parseInt(svg.match(/height="([0-9]+)"/)[1]), 
     canvas = document.createElement('canvas'); 

    canvas.setAttribute('width', width); 
    canvas.setAttribute('height', height); 

    if (canvas.getContext && canvas.getContext('2d')) { 

     canvg(canvas,svg); 
     var image = canvas.toDataURL("image/"+tipo).replace("image/"+tipo, "image/octet-stream"); 
     // Save locally 
     window.location.href=image; 
    }else { 
     alert ("Your browser doesn't support this feature, please use a modern browser"); 
    } 

} 

}(Highcharts));

任何人都知道我可以把一個名稱的文件下載?

感謝

回答

0

一個可選的方法來下載畫布圖像是使用定位標記的新下載屬性。

該代碼段會自動生成錨和調用點擊它來下載你的畫布圖像作爲圖像:

行後:

canvg(canvas,svg); 

添加此片段:

var lnk = document.createElement('a'), 
    e; 

lnk.download = 'myFilename.' + tipo; 
lnk.href  = canvas.toDataURL("image/"+tipo); 

if (document.createEvent) { 
    e = document.createEvent("MouseEvents"); 
    e.initMouseEvent("click", true, true, window, 
        0, 0, 0, 0, 0, false, false, false, false, 0, null); 

    lnk.dispatchEvent(e); 

} else if (lnk.fireEvent) { 

    lnk.fireEvent("onclick"); 
}