setPreferenceForKey は、string しか保存できないっぽいので、でっちあげた #
2007-10-02 追記: バグ持ちだったので修正
MacOSX の Dashboard 用 widet の設定値保存の際、
widget.setPreferenceForKey(string, key);
で、key の値として string を保存できるが、どうも hash とかそのまま保存できないっぽい。仕方ないので作った
// PrefJSON.js
if (window.widget) {
if ( typeof(PrefJSON) == 'undefined' ) PrefJSON = function() {};
PrefJSON.prototype.setPreferenceJsonForKey = function(hash, key) {
if ( hash == null ) {
widget.setPreferenceForKey(null, key);
}
else {
var array = new Array;
for ( var i in hash ) {
array.push("'"+i+"':'"+hash[i]+"'");
}
var str = '{'+array.join(',')+'}';
widget.setPreferenceForKey(str, key);
}
}
PrefJSON.prototype.preferenceJsonForKey = function(key) {
var d = widget.preferenceForKey(key);
var json = new Array;
if ( d && d.length > 0 )
json = eval(d);
return json;
}
}
使う方で
var hash = new Array;
hash = {hoge:'fuga', hige:'hage'};
pref.setPreferenceJsonForKey( hash, key );
var pref = new PrefJSON();
var json = pref.preferenceJsonForKey( key );
とかする