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

Popular posts from this blog

user interface - Python attempting to create a simple gui, getting "AttributeError: 'MainMenu' object has no attribute 'intro_screen'" -

jquery - Common JavaScript snippet to share files on Google Drive, Dropbox, Box.net or SkyDrive -

Android Gson.fromJson error -