[ TEXT保存 ] | dated 2012-10-3 Mori Design Office |
テキストファイルやcsvファイルを作成(データ保存)します。 実行はここをクリック 対応ブラウザ: IE, Firefox. Google chrome, Opera。 文字コード切替え: shift-jis, utf-8 ☆ なお、Windows 8 API はここでは、除外してますので公式サイトを参照。 →Micorosoft: WL.upload function 下記はそのソース、JavaScriptコード です。 |
<html> <meta http-equiv="Content-Type" content="text/html,JavaScript,HTML5; charset=shift_jis"> <title>TEXT保存</title> <style type="text/css"></style></head> <script type="text/javascript"> <!-- //本JavaScript コードは、HTML画面から テキストファイルの保存方法(3通り)を記述。 function save() { var $id = function(id) { return document.getElementById(id); } var Br; //現在のブラウザ var use= navigator.userAgent.toLowerCase(); if(use.indexOf("msie")>=0){Br = "ie";} else if(use.indexOf("firefox")>=0){Br = "firefox";} if(use.indexOf("chrome")>=0){Br = "chrome";} else if(use.indexOf("opera")>=0){Br = "opera";} var data = $id("text").value; //保存すべき中身 //@ HTML5 (徐々に普及の途中) ---------------------------------------------------------- if(Br==null){//API、適用ブラウザ:chrom22 (shift-jis 全角でutf-8) var filename = 'filename-api.txt'; var a = document.createElement('a');//hrefの'a'に定義付け a.download = filename; a.href = 'data:text/plain,' + encodeURIComponent(data); //google chrom では下記式どれでもok // a.href = "data:application/octet-stream," + encodeURIComponent(data); //a.href = (window.URL || window.webkitURL).createObjectURL(new Blob([data])); var e = document.createEvent('MouseEvents');//initMouseEventのイベント生成の為の定義付け e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, true, false, false, 0, null); a.dispatchEvent(e); } //A IE 以外のブラウザに適用 (ダウンロード画面でファイル名を自分で記入の必要あり)-------- if(Br=="firefox"||Br=="chrome"||Br=="opera"){ //stream 適用ブラウザ:Firefox19、 chrome22、opera11 (utf-8) var br = Br; var filename = 'filename-stream.txt'; if (data.length) { var obj = $id("anchor"); obj.download = filename; //chrome の場合のみ有効 obj.href = "data:application/octet-stream;filename=filename.txt," + encodeURIComponent(data); if(br=="opera"){obj.innerHTML = "■ここを左クリックし、「保存」を選択、ファイル名には拡張子を付ける";} else {obj.innerHTML = "■ここを右クリックし、「名前を付けてリンク先を保存」を選択、ファイル名には拡張子を付ける";} if(br=="chrome"){obj.innerHTML += "<br>■filename.txtでダウンロードに保存には、左クリックする";} } else{alert("データを入れて下さい");} } //B EI のみに適用 (ダウンロード画面が出ない) ------------------------------------------ if(Br=="ie"){//fso (文字コード shit-jis) var filename = toEn(currentDirectory())+ 'filename-fso.txt';//フルパス・ファイル名、区切り円記号 filename = window.prompt("[ 保存ファイル・パス名 ] 必要あれば修正、", filename);//名前ろ付けて保存の代替え if(filename){ var fs = new ActiveXObject("Scripting.FileSystemObject"); var outf = fs.CreateTextFile(filename, true); outf.Write(data); outf.Close(); } else{alert("キャンセルされました");} } } //以降、ディレクトリの表示方法の関連 ----------------------------------------------------- function currentDirectory(){ var da,oo,dt,j; oo =(location.href).replace("file:///","");//なお呼込み側localhostの時はhttp://localhost/fakepath/となりFSO不可 da = oo.split("%"); dt = da.length-1; //"%" をスペース if(0<dt){j=0;oo = da[0]+" "; for (j=1; j<da.length-1; j++){oo += da[j].substr(2,da[j].length)+" ";} oo += da[j].substr(2,da[j].length); } da = oo.split("/"); //location.hrefがfile:///c:/x.htmlの時da.lengthが2 (ie,firefox共) if(2<da.length){ oo = da[0]+"/"; for (j=1; j<da.length-1; j++){oo += da[j]+"/";} } else{oo = "";} return oo; } function fromEn(o){ //単に参考(円記号\をスラッシュに置換) var oo = o; var da,dt; var cr = String.fromCharCode(92); //円記号 da = oo.split(cr); dt = da.length-1; if(dt>0 ){ oo = da[0]; for (j=1; j<da.length; j++){oo += "/"+da[j];} } return oo; } function toEn(o){ //円記号\に置換 var oo = o; var da,dt; da = oo.split("/"); dt = da.length-1; if(dt>0 ){ oo = da[0]; for (j=1; j<da.length; j++){oo += "\\"+da[j];} } return oo; } //--> </script> <body> テキストファイルに保存<br> <textarea id="text" cols="30" rows="5" wrap="soft">保存するデータをここへ 書き込んで</textarea><br> <button onclick="save();">save</button> <a id="anchor" href=""></a><!-- stream 保存の場合のみ comment -->