base64でエンコードしてaタグのdownload属性を利用すればある程度のことはできます
IE系だとindow.navigator.msSaveOrOpenBlobを利用することになると思います
sample
javascript
1$(function(){
2 $('input[type=button][value=download]').on('click',function(){
3 var content="aaaa";
4 var filename="hoge.txt";
5 var type='application/octet-binary';
6 var blob=new Blob([content],{type:type});
7 if (window.navigator.msSaveBlob) {
8 window.navigator.msSaveOrOpenBlob(blob, filename);
9 return false;
10 }
11 var fr = new FileReader();
12 fr.onload = function(e) {
13 var src=e.target.result;
14 src=new Uint8Array(src);
15 src=String.fromCharCode.apply("",src);
16 src=btoa(src);
17 src="data:"+type+";base64,"+src;
18 var a=$('<a download="'+filename+'">').attr("href",src).text("");
19 a.appendTo($('body')).first().get(0).click();
20 a.remove();
21 }
22 fr.readAsArrayBuffer(blob);
23 });
24});
HTML
1<input type="button" value="download">