Javascript下载csv而不单击
我正在尝试使用Javascript自动下载csv文件。下面是我拥有的Javascript。我试图消除底部的HMTL,因为Javascript将在for循环中,我希望每次for循环运行时都下载该文件Javascript下载csv而不单击,javascript,csv,download,click,Javascript,Csv,Download,Click,我正在尝试使用Javascript自动下载csv文件。下面是我拥有的Javascript。我试图消除底部的HMTL,因为Javascript将在for循环中,我希望每次for循环运行时都下载该文件 function convertArrayOfObjectsToCSV(args) { var result, ctr, keys, columnDelimiter, lineDelimiter, data; data = args.data || null; if (dat
function convertArrayOfObjectsToCSV(args) {
var result, ctr, keys, columnDelimiter, lineDelimiter, data;
data = args.data || null;
if (data == null || !data.length) {
return null;
}
columnDelimiter = args.columnDelimiter || ',';
lineDelimiter = args.lineDelimiter || '\n';
keys = Object.keys(data[0]);
result = '';
result += keys.join(columnDelimiter);
result += lineDelimiter;
data.forEach(function(item) {
ctr = 0;
keys.forEach(function(key) {
if (ctr > 0) result += columnDelimiter;
result += item[key];
ctr++;
});
result += lineDelimiter;
});
return result;
}
window.downloadCSV3 = function(args) {
var data, filename, link;
var csv = convertArrayOfObjectsToCSV({
data: allTheData
});
if (csv == null) return;
filename = args.filename || 'export.csv';
if (!csv.match(/^data:text\/csv/i)) {
csv = 'data:text/csv;charset=utf-8,' + csv;
}
data = encodeURI(csv);
link = document.createElement('a');
link.setAttribute('href', data);
link.setAttribute('download', filename);
link.click();
}
这就是HTML的样子
<a href='#' id='link3' onclick='downloadCSV3({ filename: "file-id.csv" });'>Download CSV</a>
有没有办法不用处理HTML,而是用Javascript下载文件?下载时会有一个for循环,这就是我不想点击的原因。您可以使用一个隐藏的iframe并指示服务器将文件MIME类型设置为一些随机的废话。这将导致浏览器默认为“应用程序/八位字节流”,这将导致浏览器提示您下载
<iframe id="frame"></iframe>
<script>
document.getElementById("frame").style.display = "none";
function Download(ref) {
document.getElementById('frame').src = ref;
};
</script>
document.getElementById(“frame”).style.display=“无”;
功能下载(参考){
document.getElementById('frame').src=ref;
};
您可以使用隐藏的iframe并指示服务器将文件MIME类型设置为一些随机的无意义。这将导致浏览器默认为“应用程序/八位字节流”,这将导致浏览器提示您下载
<iframe id="frame"></iframe>
<script>
document.getElementById("frame").style.display = "none";
function Download(ref) {
document.getElementById('frame').src = ref;
};
</script>
document.getElementById(“frame”).style.display=“无”;
功能下载(参考){
document.getElementById('frame').src=ref;
};
您可以像这样使用工具