J'ai écrit un script Greasemonkey/Tampermonkey pour Facebook. J'avais besoin de stocker des données pour les récupérer plus tard. Pour cela, j'ai utilisé localStorage
.
Cela fonctionnait bien. Mais j'ai remarqué qu'après quelques heures toutes les données que j'ai stockées ont été supprimées automagicllay. Facebook supprime probablement toutes les données de stockage local.
Maintenant, j'ai cherché des alternatives.
Je veux stocker les données dans le système client. Quelle option ai-je? Dois-je utiliser FileSystem pour stocker des données?
Puisque vous utilisez Tampermonkey (Chrome) et Greasemonkey (Firefox). Allez-y et utilisez GM_setValue()
. Il ne peut être effacé par Facebook ou par tout autre site Web.
Il présente également l'avantage de stocker des valeurs dans plusieurs domaines.
~~~
Attention, la fonction standard de la tourbière GM_setValue()
est quelque peu problématique sur Firefox. Cela peut entraîner le blocage d'une instance de script sur des valeurs non valides. Il est donc préférable d'utiliser un sérialiseur, tel que GM_SuperValue , pour stocker autre chose que des cordes. Même des entiers d'apparence innocente peuvent provoquer le crash de la fonction GM_setValue()
par défaut.
Actuellement, seuls GM_setValue()
, cookies, localStorage et IndexedDB sont disponibles pour les données persistantes sur les deux navigateurs.
IndexedDB ferait probablement aussi ce que vous voulez, mais il n'est nulle part aussi facile à utiliser que GM_setValue()
.
Mettre à jour:
De nos jours, n'oubliez pas d'utiliser:
// @grant GM_setValue
// @grant GM_getValue
De plus, si vous utilisez la bibliothèque GM_SuperValue, vous l'ajouterez maintenant avec:
// @require http://userscripts-mirror.org/scripts/source/107941.user.js
dans le bloc de métadonnées. (Puisque userscripts.org est mort depuis longtemps.)