| [ 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 -->