javascript在Safari中下载csv数据
有没有下载我在Safari的javascript中创建的csv字符串 编辑:我不想(无法)在服务器上创建文件 我有以下代码,它可以在其他浏览器上正常工作,但不能在safari上。我能做的最好的事情似乎就是在一个新窗口中打开数据,但这对用户来说是一个糟糕的UI体验javascript在Safari中下载csv数据,javascript,csv,download,safari,Javascript,Csv,Download,Safari,有没有下载我在Safari的javascript中创建的csv字符串 编辑:我不想(无法)在服务器上创建文件 我有以下代码,它可以在其他浏览器上正常工作,但不能在safari上。我能做的最好的事情似乎就是在一个新窗口中打开数据,但这对用户来说是一个糟糕的UI体验 $("#csv").click(function(event) { event.preventDefault(); navigator.sayswho = (function() {
$("#csv").click(function(event) {
event.preventDefault();
navigator.sayswho = (function() {
var ua = navigator.userAgent, tem,
M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
return M[1];
})();
var download = function (content, fileName, mimeType) {
var a = document.createElement('a');
mimeType = mimeType || 'application/octet-stream';
mimeType = 'application/octet-stream';
if (navigator.msSaveBlob) { // IE10
return navigator.msSaveBlob(new Blob([content], {
type: mimeType
}), fileName);
} else if ('download' in a) { //html5 A[download]
a.href = 'data:' + mimeType + ',' + encodeURIComponent(content);
a.setAttribute('download', fileName);
document.body.appendChild(a);
setTimeout(function () {
a.click();
document.body.removeChild(a);
}, 66);
return true;
} else { //do iframe dataURL download (old ch+FF):
if (navigator.sayswho == 'Safari') {
var uri = 'data:text/csv;charset=utf-8,' + escape(content);
var link = document.createElement("a");
link.href = uri;
link.target = "_blank";
link.style = "visibility: hidden";
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
else
{
var f = document.createElement('iframe');
document.body.appendChild(f);
f.src = 'data:' + mimeType + ',' + encodeURIComponent(content);
setTimeout(function () {
document.body.removeChild(f);
}, 33333);
return true;
}
}
}
//csv_content is my string that has the csv data in it.
download(csv_content, moment().format("YYYY_MM_DD_HH_mm") + '.csv', 'text/csv');
});
在Chrome和FireFox中,它都能正常工作。我看到一些答案是使用FileSaver.js(),但评论说这不起作用(我也不能让它起作用)。尝试使用以下js函数
function download()
{
window.location = '<<your file name with full path>>';
//for ex. function download()
//window.location = 'mobilepayreport.xls';
}
函数下载()
{
window.location='';
//例如,函数下载()
//window.location='mobilepayreport.xls';
}
我在safari中也遇到了这个问题。您可以在safari中创建和下载csv文件。但是,在您的文件没有实际存储在任何位置之前,它不会显示文件名并在下载弹出窗口中键入(它始终显示未知)因此,我建议使用ajax在服务器端代码中以html格式传递数据,并创建一个文件,然后响应该调用,创建从服务器端代码存储的文件链接。下载该文件,然后可以删除该文件。我没有文件,只有一个包含数据的字符串。我没有生成文件。您询问是否要下载文件。在所需位置创建一个文件,您就可以下载它了。你想在那个文件里写点什么吗??我在我的一段代码中使用了excelwriter php类。如果你愿意的话,我可以教你如何使用它。