3

ボタンにこのコードがあります:

var csvContent = "data:text/csv;charset=utf-8,";
csvContent += myCSVcontent;

var encodedUri = encodeURI(csvContent);
window.open(encodedUri);

これは、Chrome、Safari、および Firefox で完全に機能します。
- IE8 ではありません - Internet Explorer 8 との互換性が必要です。

上記のコードを呼び出すボタンをクリックすると、.csv ファイルがコンピューターにダウンロードされます。
ただし、IE8でボタンをクリックすると、アドレスバーにすべてのcsvコンテンツを含む新しいIE8ウィンドウが開き、何もダウンロード(またはダウンロードを要求)しません。

残念ながら、IE8 との互換性が必要です。どうすればこれを機能させることができますか?

編集:サーバーへの追加の呼び出しを避ける必要があります。すべてがクライアント側で発生する必要があります。これは現在、IE8 (およびおそらく IE9) を除くすべてのブラウザーで機能しています。

Edit2:最後の行を「document.location.href= encodedUri;」に変更すると 他のすべてのブラウザーでは引き続き機能しますが、IE8 でボタンをクリックすると、「システム コールに渡されたデータ領域が小さすぎます」というエラー ウィンドウが表示されます。それが私に何を言っているのか分かりますか?

4

1 に答える 1

0

「データ:テキスト/csv;」HTML5 であるため、IE8 では機能しません。ActivexObject を使用してこれを解決できますが、ユーザーのデスクトップにファイルを書き込み、ポップアップは表示されません。

var csv = new ActiveXObject("scripting.FileSystemObject");
var fLoc = csv.CreateTextFile(fileName);
fLoc.WriteLine(csvData);
fLoc.close();
于 2014-11-05T19:55:39.513 に答える