将SVG元素导出为SVG,PNG适用于chrome,但不适用于firefox/safari



我有一个svg元素,我想将其导出为svg和PNG。这里已经有一些关于堆栈溢出的方法,比如这个和mbostock的方法。然而,我做到了像这样的东西:

var $el = '<svg xmlns="http://www.w3.org/2000/svg" height="367" width="780"id="canvas" version="1.1" style="overflow: hidden;">
<circle r="12" style="cursor: move; fill: #4682b4; stroke: #000000; stroke-width: 1.5px;"/></svg>';
var serializer = new XMLSerializer();
var res = serializer.serializeToString($el);
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:image/svg+xml;base64,' + btoa(res);
hiddenElement.download = 'export.svg';
hiddenElement.click();

这是它应该做的,但只有铬。Firefox根本没有反应,safari告诉我:

阻止原点为"null"的帧访问原点为的帧"http://localhost:8080".请求访问的帧有一个协议对于"数据",被访问的帧具有"http"协议。协议必须匹配。

有什么建议吗?谢谢

如果您呈现的页面类似于text/html,请在<head>标记中使用application/xhtml+ xml<meta http-equiv="content-type" content="application/xhtml+xml; />。希望,它会起作用的。

最新更新