Javascript 如何解决这个问题;失败-禁止“;在D3JS中创建和下载文件时出错

Javascript 如何解决这个问题;失败-禁止“;在D3JS中创建和下载文件时出错,javascript,svg,d3.js,download,tree,Javascript,Svg,D3.js,Download,Tree,我基于Mike Bostock的可折叠树创建了一个系谱应用程序 我试图使用这个示例将树作为SVG文档下载 如果我像示例中那样使用dataURL中的静态数据,我的代码就可以工作 $('#download-SVG').click(function() { var dl = document.createElement("a"); document.body.appendChild(dl); // This line makes it work in Firefox

我基于Mike Bostock的可折叠树创建了一个系谱应用程序

我试图使用这个示例将树作为SVG文档下载 如果我像示例中那样使用dataURL中的静态数据,我的代码就可以工作

$('#download-SVG').click(function() {
    var dl = document.createElement("a");
    document.body.appendChild(dl); // This line makes it work in Firefox.
    dl.setAttribute("href", dataURL);
    dl.setAttribute("download", "test.svg");
    dl.click();
   });
但是,如果使用修改后的代码来使用SVG,则会出现“Failed-probled”错误


如果您能提供支持以确定原因,我将不胜感激。

我已通过执行以下更改成功下载了该文件:

$('#download-SVG').click(function() {
    var dl = document.createElement("a");
    document.body.appendChild(dl); // This line makes it work in Firefox.
    dl.setAttribute("href", svgDataURL(svg.node())); // pass the node
    dl.setAttribute("download", "test.svg");
    dl.click();
   });

 function svgDataURL(svg) {
     var svgAsXML = (new XMLSerializer).serializeToString(svg);
     var dataURL = "data:image/svg+xml," + encodeURIComponent(svgAsXML);
     return dataURL;
   }

文件已下载,但我无法打开该文件,我怀疑这是由于svg数据内容造成的,但这是一个完全不同的问题。

a)svg中有什么内容?b)什么浏览器禁止您使用?@RobertLongson svg包含树(节点和路径)。我用的是铬。我尝试了MS Edge,错误是“无法下载-没有权限”。我是从localhost运行的。在进一步调查时,我看到了以下错误:您没有权限访问此服务器上的/function(svg){var svgAsXML=(新的XMLSerializer)。serializeToString(svg);返回“data:image/svg+xml,+encodeURIComponent(svgAsXML);}。
$('#download-SVG').click(function() {
    var dl = document.createElement("a");
    document.body.appendChild(dl); // This line makes it work in Firefox.
    dl.setAttribute("href", svgDataURL(svg.node())); // pass the node
    dl.setAttribute("download", "test.svg");
    dl.click();
   });

 function svgDataURL(svg) {
     var svgAsXML = (new XMLSerializer).serializeToString(svg);
     var dataURL = "data:image/svg+xml," + encodeURIComponent(svgAsXML);
     return dataURL;
   }