honjarake blog

自分用にテキトーにまとめる

greasemonkey データの保存

最近作っているスクリプトにNG機能を持たせようと思っており
NGワードを保存する処理を考え中
やはり、グリモンが用意したものを使ったほうがいいのかなあ…

そこで、GM_setValueについて調べる

自分の過去記事のスクリプトでは、JSONでlocalstrageへのデータ保存を使っていた

    //======================================================
    //set
    //------------------------------------------------------
    function setData(key, data) {
        if (window.JSON == false) {
            alert('Your Web Browser is not supported JSON.');
            return ;
        }
        if (key != null && data != null) localStorage.setItem(key, data);
    }
    //======================================================
    //get
    //------------------------------------------------------
    function getData(key, defValue) {
        var data = '';
        if (window.JSON == false) {
            alert('Your Web Browser is not supported JSON.');
            return data;
        }
        data = localStorage.getItem(key);
        if (data == null) (typeof defValue == 'defined') ? data = '' : data = defValue;
        //alert(data);
        return data;
    }

GM関数を使うのに、@grant指定しないといけないことと、@grant指定をすると
jQueryの処理を入れるときにjQueryのjsファイルを@requireしないといけない
参照先はgoogleの提供するライブラリがあるとはいえ、どう影響するのかわからなかったから

今までは数値とフラグにしか使用しなかった(数値以外は保存しない処理で弾いていた)が
NG文字列となると、問題のおきそうな文字をエスケープさせないとまずい気がする
この辺りの知識が乏しいので、xss関連の記事を参考に調べ中