Comment / où stocker des données dans un script Tampermonkey Chrome?
j'ai écrit un script Greasemonkey/Tampermonkey pour Facebook . J'avais besoin de stocker des données à récupérer plus tard. Pour cela, j'ai utilisé localStorage
.
Qui fonctionnait bien. Mais j'ai remarqué qu'après quelques heures toutes les données que j'ai stockées ont été enlevées automatiquement. Probablement Facebook lui-même supprime toutes les données localStorage.
Maintenant, j'ai cherché des alternatives.
- Cookies : ce sera supprimé lorsque l'utilisateur efface de l'histoire.
- Web SQL: apparemment il est abandonné par w3.org. Donc dans un futur proche, je suppose que chrome pourrait ne pas utiliser Web sql aussi.
je veux stocker les données dans le système client. Quelle option dois-je avoir? Dois-je utiliser le système de fichiers pour stocker des données?
1 réponses
puisque vous utilisez Tampermonkey (Chrome) et Greasemonkey (Firefox). Aller de l'avant et utiliser GM_setValue()
. Il ne peut pas être effacé par Facebook ou par tout autre site web.
il a l'avantage de stocker des valeurs de cross-domain, ainsi.
~~~
Attention que le bog-standard GM_setValue()
est quelque peu problématique sur Firefox. Il peut causer un crash d'une instance de script sur des valeurs invalides -- il est donc préférable d'utiliser un sérialiseur, tels que GM_SuperValue, pour stocker tout sauf des ficelles. Même les entiers innocents peuvent causer le défaut GM_setValue()
plantage.
Actuellement, seulement GM_setValue()
, les 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()
.
mise à Jour:
De nos jours, n'oubliez pas d'utiliser:
// @grant GM_setValue
et// @grant GM_getValue
de plus, si vous utilisez la bibliothèque GM_SuperValue, vous l'ajouterez avec:
// @require http://userscripts-mirror.org/scripts/source/107941.user.js
dans le bloc de métadonnées. (Depuis userscripts.org est mort depuis longtemps.)