Ich möchte einen benutzerdefinierten Download (JavaScript-generierte JSON-Datei) von einem SVG-Element erstellen (in my application Schnittstelle ist in SVG). Während ich es für einfaches HTML (vide Force download of 'data:text/plain' URL) tun kann, funktioniert es nicht für SVG.Link zur generierten Download-Datei von SVG
Ein Beispiel (https://jsfiddle.net/stared/qzn7Ldme/):
HTML:
<a id="link_html" download="file.txt">download file (from HTML)</a>
<br/>
<svg height="100" width="300">
<a id="link_svg" download="file.txt">
<text x="0" y="50">download file (from SVG)</text>
</a>
</svg>
JS:
var conent = "This is the file content.";
var header = "data:text/plain;charset=utf-8,"
var payload = header + encodeURIComponent(conent);
// works
d3.select("#link_html").on("click", function() {
this.href = payload;
});
// does not work as intended
d3.select("#link_svg").on("click", function() {
//// line below does nothing:
// this["xlink:href"] = payload;
// opens file in the same window, not as a downloaded file!
d3.select("#link_svg").attr("xlink:href", payload);
});
Wenn es darauf ankommt, verwende ich D3.js (3.x).
Gibt es eine bekannte Lösung?
Wie ich jetzt sehe, kann die Verwendung von 'Blob' und' createObjectURL' eine Lösung sein - vide [Blob createObjectURL download funktioniert nicht in Firefox (funktioniert aber beim Debuggen)] (http://stackoverflow.com/questions/30694453/blob- createobjecturl-download-nicht-arbeiten-in-firefox-aber-funktioniert-wenn-Debuggen). –
SVG '' Elemente unterstützen keine Download-Attribute. Du könntest w3c kontaktieren und darum bitten, dass es über https://lists.w3.org/Archives/Public/www-svg/ –