Javascript 将svg另存为png图像到磁盘-浏览器差异

Javascript 将svg另存为png图像到磁盘-浏览器差异,javascript,firefox,svg,d3.js,xml-serialization,Javascript,Firefox,Svg,D3.js,Xml Serialization,我试图将使用d3.js创建的svg绘图保存到一个文件中,作为png图像。这段代码在Chrome上运行良好(将文件保存到磁盘),但在Firefox32上失败。你知道为什么吗 $(".savePNG").click (function() { var svg = ($("#svgContainer")[0]).getElementsByTagName("svg")[0]; var svg_xml = (new XMLSerializer).serializeToString(svg)

我试图将使用
d3.js
创建的svg绘图保存到一个文件中,作为png图像。这段代码在Chrome上运行良好(将文件保存到磁盘),但在Firefox32上失败。你知道为什么吗

$(".savePNG").click (function() {
    var svg = ($("#svgContainer")[0]).getElementsByTagName("svg")[0];
    var svg_xml = (new XMLSerializer).serializeToString(svg);   // extract the data as SVG text
    var data_uri = "data:image/svg+xml;base64," + window.btoa(svg_xml);

    var image = new Image;
    image.src = data_uri;
    image.onload = function()
    {
        var canvas = document.createElement("canvas");
        canvas.width = image.width;
        canvas.height = image.height;

        var context = canvas.getContext("2d");
        context.clearRect(0, 0, image.width, image.height);
        context.drawImage(image, 0, 0);

        var a = document.createElement("a");
        a.download = "file.png";
        a.href = canvas.toDataURL("image/png");
        a.click ();
    };
});
如果它提供任何线索
console.log(svg_xml.length+“”+data_uri.length)

在Chrome上返回3501304 4668434,在Firefox上返回3060753 4081030。因此,Firefox似乎丢失了一些数据,但我不知道该如何理解

根据建议,firefox的
.click()
方法失败。但是
window.open(a.href,“_blank”)将工作并打开一个包含图像的新窗口。您可以右键单击保存它。

在FF中,
a。单击()
失败。安全限制?