简体   繁体   English

Javascript转CSV功能与IE或Firefox不兼容

[英]Javascript to CSV Function not compatible with IE or Firefox

I have a function that converts data to csv using javascript. 我有一个使用javascript将数据转换为csv的功能。 Here is my Fiddle . 这是我的小提琴 This however does not work in firefox or Internet explorer. 但是,这在firefox或Internet Explorer中不起作用。 I tried debugging but i am not sure what to look for or where and nothing sticks out clearly. 我尝试调试,但不确定要查找的内容或位置,没有清楚的地方。 Any help is apprecitated. 任何帮助表示感谢。 Thanks 谢谢

 <body>

 <a href='#' onclick='downloadCSV({ filename: "stock-data.csv" });'>Download CSV</a>

</body>

     var stockData = [
    {
        Symbol: "AAPL",
        Company: "Apple Inc.",
        Price: "132.54"
    },
    {
        Symbol: "INTC",
        Company: "Intel Corporation",
        Price: "33.45"
    },
    {
        Symbol: "GOOG",
        Company: "Google Inc",
        Price: "554.52"
    }
];

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.downloadCSV = function(args) {
    var data, filename, link;

    var csv = convertArrayOfObjectsToCSV({
        data: stockData
    });
    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();
};

To download in firefox and ie you have to append it to the body before clicking. 要在Firefox中下载,即必须在单击之前将其附加到主体。 Try adding this. 尝试添加它。

link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);

Here's a fiddle . 这是一个小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM