setPreferenceForKey は、string しか保存できないっぽいので、でっちあげた

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 );

とかする

See Also

Copyright © 髭。/ Hugo + hugo-book