さて、画面1に示したLiveガジェットだが、当然のことながら、入力したテキストは、ログオフしてから後日、Windows Liveにログインしたときには失われている。
次回ログインしたときにも失わないようにするには、ユーザーが入力したテキストを保存しておくようにすればよい。
Liveガジェットにおいて、値を保存するには、ModuleオブジェクトのsetPreferenceメソッドを用いよう。Moduleオブジェクトは、コンストラクタのp_args変数のmoduleプロパティとして得ることができる。
ITmedia.Gadget.Example.MyGadget =
function(p_elSource, p_args, p_namespace)
{
// モジュールオブジェクト
var m_module = p_args.module;
}
setPreferenceメソッドでは、第1引数に適当なキーを、第2引数に保存したい値を渡す。
m_module.setPreference(キー, 値);
値は文字列や数値である必要はなく、どんなオブジェクトでも引き渡すことができる。ただし保存できる最大サイズは、約1000文字(シリアル化されたあとの文字数であり、元のデータ数はそれより少ない)までだ。
LiveガジェットSDKによると、今後、もっと多くのデータを保存できるAPIが提供されるとのことだ。
setPreferenceメソッドで保存した値は、getPreferenceメソッドを使って取得できる。
m_module.getPreference(キー);
getPreferenceメソッドは、もし、該当するキーに値がまだ保存されていないときにはnullを返す。そしてdeletePreferenceメソッドを呼び出すと、該当の保存値を削除することができる。
m_module.deletePreference(キー);
実際に、画面1に示したプログラムにおいて、ユーザーがテキストボックスに入力した値を保存して残しておくには、次に挙げるリスト3のようにすればよい。
リスト3では、画面1に示した[設定]ボタンがクリックされたときに呼び出されるOnClick関数において、次のようにして「myvalue」というキーで、入力されたテキストを保存している。
m_args.module.setPreference(
'myvalue', $('mytextbox').value);
そしてガジェットが読み込まれるときに呼び出されるinitializeメソッドにおいて、次のようにして、前回保存した値を取り出して、テキストボックスやdivタグ要素に再設定している。
var initval =
m_args.module.getPreference('myvalue');
if (initval != null)
{
$('mytextbox').value = initval;
$('result').innerText = initval;
}
Copyright © ITmedia, Inc. All Rights Reserved.