File API:WriterのBlobBuilderを使ってダウンロードさせる

File API:Writerで定義されているBrobBuilderを使うと、ブラウザ側で書き出したファイルをパソコンなどにダウンロードすることができる。 BrobBuilderは比較的新しい仕様のFileWriteであり、実装がブラウザによって異なる。
次は入力したテキストをダウンロードする例である。IE11とFirefoxで動作の確認ができたが、safari5.1.7では動かなかった。

HTML

<form>
  <textarea id="txt" rows="5" cols="40"></textarea>
  <br><br>
  <input type="button" value="保存" id="exec">
</form>
<div id="link"></div>

JavaScript

function fsave(){
  var txt = document.querySelector('textarea#txt').value;
  txt = txt.replace(/\n/g, "\r\n");  // LF => CR LF
  var bb = new Blob([txt]);

  var url;
  if(window.navigator.msSaveBlob){
    // IEの場合
    window.navigator.msSaveOrOpenBlob(bb, 'savefile.txt'); 
  } else {
    // IE以外
    url = window.URL.createObjectURL(bb);
    document.querySelector('div#link').innerHTML = '<a href="' + url + '" target="_blank">' + url + '</a><br/>';
  }
}

window.addEventListener("DOMContentLoaded", function(){
  document.querySelector('form #exec').addEventListener('click',fsave,false);
},false);

文字を入力してから「保存」をクリックする