【发布时间】:2014-07-27 14:09:54
【问题描述】:
我一直在寻找一种从 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);
svg 仅绘制矩形应该允许您在按下矩形时将 svg(带有矩形)下载为 .svg 文件。我不知道我是否在正确的轨道上。
我对 d3.js 非常陌生,但基本上我正在为 Firefox 中的客户端 d3.js svg 下载寻找可能的修复/替代方法。我最好将下载“按钮”作为 svg 的一部分。
提前致谢!
【问题讨论】:
标签: javascript firefox svg d3.js download