Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript下载csv而不单击_Javascript_Csv_Download_Click - Fatal编程技术网

Javascript下载csv而不单击

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

我正在尝试使用Javascript自动下载csv文件。下面是我拥有的Javascript。我试图消除底部的HMTL,因为Javascript将在for循环中,我希望每次for循环运行时都下载该文件

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;
};
您可以像这样使用工具