Javascript:大きなテキスト/ csvファイルをエクスポートするとGoogle Chromeがクラッシュする



Answers

私は以下の関数を使ってCSVをダウンロードしました。 IE / Firefox / Chromeで私のために働いた

function downloadFile(data, fileName) {
        var csvData = data;
        var blob = new Blob([ csvData ], {
            type : "application/csv;charset=utf-8;"
        });

        if (window.navigator.msSaveBlob) {
            // FOR IE BROWSER
            navigator.msSaveBlob(blob, fileName);
        } else {
            // FOR OTHER BROWSERS
            var link = document.createElement("a");
            var csvUrl = URL.createObjectURL(blob);
            link.href = csvUrl;
            link.style = "visibility:hidden";
            link.download = fileName;
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
}
Question

私はクライアント側でCSVファイルをエクスポートするために、次のJavascriptコードを持っています。 しかし、私は大きな配列をエクスポートしようとするたびにGoogle Chromeがクラッシュします。 Chromeで許可されるデータ文字列の制限はいくらですか? Chromeで許可されているメモリの上限に達している可能性はありますか? Chromeでデータ文字列が長すぎる場合、クライアント側で大きなCSVファイルをエクスポートするにはどうすればよいですか?

var csvRows = [...]; //Array with 40000 items, each item is 100 characters long.

var csvString = csvRows.join("\r\n");

var a = document.createElement('a');

a.href        = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvString);
a.target      = '_blank';
a.download    = 'export.csv';

document.body.appendChild(a);
a.click();

(予想されるファイルサイズは約6.4MBです)




Related