javascript - Store a persistent list between sessions? -
i write script allows me customize site. need have persistent dictionary. possible tampermonkey?
eg:
persist var mylist = {}; // loads mylist hd/cache if exists, else create new one.
see, also, "how/where store data in chrome tampermonkey script?".
for this, use gm_getvalue, gm_setvalue, , json encoding. eg:
var mylist = json.parse (gm_getvalue ("mylistarray", null) ) || {}; and
gm_setvalue ("mylistarray", json.stringify (mylist) );
here's a complete working script demonstrates fetching, changing, , storing associative array:
// ==userscript== // @name _persist list between sessions // @include http://your_server.com/your_path/* // @include https://stackoverflow.com/questions/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js // @grant gm_getvalue // @grant gm_setvalue // ==/userscript== var mylist = {}; var mylistobj = gm_getvalue ("mylistarray", ""); if (mylistobj) { mylist = json.parse (mylistobj); } //-- debug: list items console. console.log ("there ", object.keys (mylist).length, " items in list."); (var myitem in mylist) { if (mylist.hasownproperty && mylist.hasownproperty (myitem) ) { console.log (myitem + ": ", mylist[myitem]); } } //-- demo buttons showing how change list , store new value(s). $("body").prepend ( '<div id="gmdemocntrls">' + '<button data-type="add">add item</button>' + '<button data-type="del">delete item</button>' + '<button data-type="sav">save list</button>' + '</div>' ); $("#gmdemocntrls button").click ( function (zevent) { var numitems = object.keys (mylist).length; switch ( $(zevent.target).data ("type") ) { case "add": var newkey = "autoname_" + (numitems + 1); var newval = new date().tostring (); mylist[newkey] = newval; console.log ("added ", newkey, " = ", newval); break; case "del": if (numitems) { var oldkey = object.keys (mylist)[numitems - 1]; delete mylist[oldkey]; console.log ("deleted ", oldkey); } else console.log ("no items left!"); break; case "sav": gm_setvalue ("mylistarray", json.stringify (mylist) ); console.log ("saved list of ", numitems, " items."); break; default: alert ("oops! script error button handling!"); break; } } );
Comments
Post a Comment