2013-05-22 2 views

ответ

2

См, также, "How/Where to store data in a Chrome Tampermonkey script?".

Для этого используйте GM_getValue, GM_setValue и кодировку JSON. EG:

var myList = JSON.parse (GM_getValue ("myListArray", null)) || {}; 

и

GM_setValue ("myListArray", JSON.stringify (myList)); 


Вот полный рабочий сценарий, который демонстрирует выборка, изменение и сохранение ассоциативный массив:

// ==UserScript== 
// @name  _Persist a 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 to console. 
console.log ("There are ", Object.keys (myList).length, " items in the list."); 
for (var myItem in myList) { 
    if (myList.hasOwnProperty && myList.hasOwnProperty (myItem)) { 
     console.log (myItem + ": ", myList[myItem]); 
    } 
} 

//-- Demo buttons showing how to change the list and store the 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 the list of ", numItems, " items."); 
      break; 

     default: 
      alert ("Oops! script error with button handling!"); 
      break; 
    } 
}); 
+0

Спасибо. Я должен отметить, что очень важно предоставить доступ к GM_getValue и GM_setValue ... – Archival

Смежные вопросы