J'ai un script Greasemonkey qui utilise un objet Javascript pour gérer certains objets stockés. Il couvre un assez grand volume d'informations, mais beaucoup moins que ce qu'il a réussi à stocker et récupérer avant de rencontrer mon problème. Une valeur refuse de sauver, et je ne peux pas pour la vie de moi déterminer pourquoi. Le code de problème suivant:Greasemonkey échouant à GM_setValue()
- Fonctionne pour d'autres objets plus gros en cours de maintenance.
- Gère actuellement une quantité totale de données plus petite que précédemment travaillée.
- N'entre en collision avec aucune fonction ou autre définition d'objet.
- Peut (facultativement) enregistrer avec succès la clé de stockage de problème en tant que "{}" lors du démarrage du code.
this.save = function(table) {
var tables = this.tables;
if(table)
tables = [table];
for(i in tables) {
logger.log(this[tables[i]]);
logger.log(JSON.stringify(this[tables[i]]));
GM_setValue(tables[i] + "_" + this.user, JSON.stringify(this[tables[i]]));
logger.log(tables[i] + "_" + this.user + " updated");
logger.log(GM_getValue(tables[i] + "_" + this.user));
}
}
Le problème est toujours reproductible et les statments de journalisation produire la sortie suivante dans Firebug:
- Object {= 54,10 Object} // extension indique le contenu complet comme prévu, mais il est une curiosité - Firebug met en évidence les touches d'objet en violet au lieu du noir habituel pour les objets anonymes.
- {"54,10": {"x": 54, "y": 10, "nom": "Lucky Pheasant"}} // Le JSON correctement enchaîné.
- bookmarks_HonoredMule mis à jour
- non définie
J'ai essayé de modifier le format des clés d'objet, sans effet. En outre, le problème est que cette valeur particulière est enregistrée avec succès en tant qu'objet vide ("{}") lors de l'initialisation du code, mais ignorer cela n'aide pas non plus. Recharger la page confirme que la sauvegarde de l'objet non vide a vraiment échoué.
Une idée de ce qui pourrait causer ce problème? J'ai exploré à fond la possibilité d'atteindre des contraintes de taille, mais cela ne semble pas être le problème - comme je l'ai déjà mentionné, j'ai déjà réduit l'utilisation du stockage. D'autres objets plus volumineux enregistrent encore, et le nombre total d'objets, qui n'était pas déjà élevé, a encore été réduit d'un montant supérieur à la quantité de données que je tente de stocker ici.