我一直在寻找一种方法来下载由d3.js生成的svg,但我最终要么使用phantom.js(似乎有点过度设计了,或者至少是给出这个“简单”问题的方式比较吓人),要么使用svg-crowbar.js,但它显然只能用于chrome(我需要firefox)。我还发现了以下代码:
//Encode the SVG
var serializer = new XMLSerializer();
var xmlString = serializer.serializeToString(d3.select('svg').node());
var imgData = 'data:image/svg+xml;base64,' + btoa(xmlString);
//Use the download attribute (or a shim) to provide a link
<a href="'+imgData+'" download="download">Download</a>
在https://groups.google.com/forum/#!topic/d3-js/RnORDkLeS-Q中,有关于下载svg的讨论(如果我能使其工作)。 我想,与其提供下载按钮,不如点击某个svg元素也可以实现?我现在有以下代码,但它没有起作用:
var svg = d3.select(elementid).append("svg")
.attr("width", 500)
.attr("height", 500)
.append("g")
var serializer = new XMLSerializer();
var xmlString = serializer.serializeToString(d3.select('svg').node());
var imgData = 'data:image/svg+xml;base64,' + btoa(xmlString);
//Use the download attribute (or a shim) to provide a link
svg.append("rect")
.attr("x", 20)
.attr("y", 20)
.attr("width", 130)
.attr("height", 160)
.attr("fill", "red")
.attr("id", "rectLabel")
.attr('xlink:href',imgData);
< p >SVG只绘制矩形,当单击矩形时,应允许您将SVG(包括矩形)下载为 .svg 文件。我不知道这样做是否正确。
我非常新于 d3.js,但基本上我正在寻找 Firefox 中客户端 d3.js SVG 下载的可能修复/替代方法。最好将下载“按钮”作为 SVG 的一部分。
提前致谢!