2016-05-04 38 views
1

我的HTML页面中有一个简单的按钮,用于下载SVG文件。这在Chrome中工作得很好,但在Firefox中,文件只有1行(第一行)。JavaScript下载停止在Firefox中,但在Chrome中工作

$("button").click(function(){ 
    svgSource = phylocanvas.getSvgSource(); 
    console.log(svgSource); 
    if(svgSource){ 
     var hiddenElement = document.createElement('a'); 
     document.body.appendChild(hiddenElement); // Add the element to the DOM 
     hiddenElement.setAttribute("type", "hidden"); // make it hidden 
     hiddenElement.href = 'data:attachment/text,' + encodeURI(svgSource); 
     hiddenElement.target = '_blank'; 
     hiddenElement.download = '<TMPL_VAR NAME="TREENAME">.svg'; 
     console.log(hiddenElement.download); 
     hiddenElement.click(); 
    } 
}); 

任何想法如何在Firefox中获取整个文件?

回答

0

你还可以尝试:

var pom = document.createElement('a'); 
    pom.setAttribute('href', 'data:text/xml;charset=utf-8,' + window.encodeURIComponent(textContent)); 
    pom.setAttribute('download', filename); 

var event = document.createEvent('MouseEvents'); 
    event.initEvent('click', true, true); 

pom.dispatchEvent(event); 

更换的textContent和文件名。

+1

谢谢你,这两个浏览器的工作。 –

0

一个http请求可以包含一个头文件变量ContentDisposition,它是download属性的等价物。据我所知,Firefox和Chrome的唯一区别在于,使用Firefox时,头部属性具有优先权,Chrome使用下载属性获胜。也许在Chrome中,下载属性被使用并且文件被按原样下载,而在Firefox中,标题属性(如果提供的话)被使用并且具有一个???值,只有在内容发送svg渲染器时才保存文件的xml头。 (只是一个猜测;-))

相关问题