Javascript转CSV功能不兼容IE或Firefox



我有一个使用javascript将数据转换为csv的函数。这是我的小提琴。但是,这在firefox或Internet explorer中不起作用。我试着调试,但我不确定要寻找什么或在哪里,没有什么突出清楚。任何帮助都是感激的。由于

 <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();
};

要在firefox和ie中下载,您必须在点击之前将其附加到正文中。试着添加这个

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

给你一把小提琴

最新更新