Создать CSV-файл из JavaScript под IE11 - PullRequest
0 голосов
/ 25 мая 2018

Я прочитал много образцов, чтобы сгенерировать CSV-файл из данных, и нажать его для загрузки, чтобы экспортировать.

 let csvContent = '';
                $.each(msg.d.LstObj[0], function (key, element) { csvContent += (csvContent === '' ? '' : ',') + key; });
                csvContent += "\n";
                msg.d.LstObj.forEach(function (rowArray) {
                    var row = '';
                    $.each(rowArray, function (key, element) { row += (row === '' ? '' : ',') + element; });
                    csvContent += row + "\n";
                });
                var hiddenElement = document.createElement('a');
                hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvContent);
                hiddenElement.target = '_blank';
                hiddenElement.download = 'people.csv';
                hiddenElement.click();

Под Chrome FF: нормально Под IE11: нет загрузки, просто сообщение, спросите меня:

веб-сайт voulez vous autoriser ce à ouvrir une application

И только один выбор магазина окон ... У кого-то есть идея ???Я поместил свой код в "site de confiance" ...

1 Ответ

0 голосов
/ 25 мая 2018

Вот блок, который я использую для удовлетворения всех браузеров, включая IE 11, и он прекрасно работает для меня:

if (window.navigator.msSaveBlob) {
    //Internet Explorer
    window.navigator.msSaveBlob(new Blob([result]), csvFileName);
} else if (window.webkitURL != null) {
    //Google Chrome and Mozilla Firefox
    var a = document.createElement("a");
    result = encodeURIComponent(result);
    a.href = "data:application/csv;charset=UTF-8," + result;
    a.download = csvFileName;
    a.click();
} else if (navigator.appName === "Microsoft Internet Explorer") {
    //Internet Explorer 8 and 9
    var oWin = window.open();
    oWin.document.write("sep=,\r\n" + result);
    oWin.document.close();
    oWin.document.execCommand("SaveAs", true, csvFileName);
    oWin.close();
} else {
    //Everything Else
    window.open(result);
}
...