Home > JavaScript > | Mac > 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 );

とかする

Comments:0

Comment Form

Home > JavaScript > | Mac > setPreferenceForKey は、string しか保存できないっぽいので、でっちあげた

Feeds

Return to page top