dポイントプレゼントキャンペーン実施中!

お世話になります。
ちょっとした会の幹事を一年間やることになりました。(余談)
以下のプログラムで宛先、件名、お名前、預かり金額をアンドロイド携帯のローカルストレージ
に保存しておきたいのですが、
どのようにすればよいでしょうか?
ご指導お願いいたします。
以下のプログラム(?)は宛先などを記入して、メーラーから送信するといったものです。


<form name=mailform>
宛先:<input name=to type=text value="info@example.com"><br>
件名:<input name=subject type=text value="hello"><br>
お名前:<input name=name type=text value="namae"><br>
預かり金額:<input name=azukari type=text value="jyusyo"><br>
<button type=submit>送信</button>
</form>

<script>window.addEventListener('load',function(ev){
document.forms['mailform'].addEventListener('submit',function(submitEv){
submitEv.preventDefault();
var form = submitEv.target;
var to = form.elements['to'].value;
var subject = form.elements['subject'].value;
var name = form.elements['name'].value;
var addr = form.elements['addr'].value;
var body = "お名前:"+ name + "預かり金額:" + azukari
if (!to) return;
var url = "mailto:" + to + "?subject=" + subject + "&body=" + body;
var a = form.appendChild(document.createElement('a'));
a.href = url;
a.click();
form.removeChild(a);
}, false);
}, false)</script>

※このプログラムも以前こちらで質問して教えていただいたものです。
素人の為、プログラムの説明などはうまくできないと思いますが、ちょっと勉強しましたので、
わかる範囲で回答に必要な質問には答える覚悟です。
よろしくお願いいたします。

A 回答 (1件)

ローカルへの保存といっても、テキストファイルのような形でSDカードに保存するようなやり方はちょっと難しいでしょう。



そもそもWebに搭載されているJavaScriptというのは、ローカル環境へのアクセスを厳しく制限して作られています。だって、スクリプトでファイルを保存できるようになっていたら、例えばシステムの起動ディレクトリにウイルスファイルを保存したり、システムのファイルを書き換えたりできるってことでしょう? それはあまりに危険です。

というわけで、JavaScriptのスクリプトをちょっと書き換えてローカルに保存できるようにする、という考え方は捨てて下さい。方法としては、以下の3つのいずれかがいいと思います。


1. サーバーに保存する
サーバーを立ててそこにデータを送信し、保存する。そこからデータをダウンロードすることは可能です。このやり方なら、ローカルにファイルとして保存できます。ただし面倒。


2. ローカルストレージを使う
JavaScriptでは、テキストに名前をつけて保存しておけます。こんな感じです。

localStorage.setItem("名前", 保存するテキスト );

これで保存したものは、ブラウザを終了した後も保存して残ります。消えたりはしません。取り出すときはこうします。

var 変数 = localStorage.getItem("名前");

これで、指定した名前で保存したテキストが取り出せます。テキストを取り出すためのページを作って、そこにアクセスして表示するようにすれば便利でしょう。個人的には一番てっとり早くておすすめ。


3. テキストを表示して手作業で保存する
新しいページを開いてテキストを表示し、それを手作業で保存する、というやり方はあるでしょう。Android 4.0以降なら、オフライン用に保存できるので、Webページとして保存しておくというやり方ができます。例えば、こんな感じ。

var newwin = window.open("", "");
newwin.document.open();
newwin.document.write( 表示するテキスト );
newwin.document.close();

これでテキストを表示したページが開かれますから、それを保存すればいいでしょう。
    • good
    • 0
この回答へのお礼

回答有難うございます。
2ローカルストレージを使うを試してみます。

いろいろ不安材料もあるようです。(ウイルスとかファイルの書き換えとか)
慎重にしなくてはならないようですね。
わたしの場合、
localStorage.setItem("宛先", "");
var to type= localStorage.getItem("宛先");


といった書き方で間違いないでしょうか?

ご指導お願いいたします。

お礼日時:2014/07/14 07:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!