Question

Alors, je vous écris un peu Greasemonkey UserScript et son beau travail dans Firefox si je tente de l'exécuter avec Tampermonkey sur Googles Chrome-je obtenir erros étranges lors de l'encodage / décodage des tableaux.

J'essaie de rendre compatibles le navigateur cross script si je devais écrire une fonction de décider quelles méthodes JSON utiliser

function jsonEncode(string) { 
  try {
    return JSON.stringify(string); 
  } catch (e) {
    return JSON.encode(string); 
  }
}

function jsonDecode(obj) {
  try { 
    return JSON.parse(obj); 
  } catch (e) { 
    return JSON.decode(obj);
  }
}

Pour simplifier les choses, je l'ai maintenant réduit le code à un simple tableau et la tentative de codage / décodage et itérer

var array = ['string1', 'string2'];

var encoded = jsonEncode(array);
localStorage.setItem('json_test', encoded);

var decoded = jsonDecode(localStorage.getItem('json_test'));
for(var i = 0; i < decoded.length; i++) {
    console.log(decoded[i]); 
}

Je pense que la sortie soit

string1
string2

au lieu de chrome me donne ce

[
"
s
t
r
i
n
g
1
"
,
"
s
t
r
i
n
g
2
"
]

Est-ce que quelqu'un a une idée comment résoudre ce problème, ou pourquoi le chrome est en train de faire ça?

EDIT 1: Version Chrome 15.0.874.121 m

EDIT 2: ont pas encore pensé à elle, mais quand je l'essayer avec un objet au lieu d'un tableau, il fonctionne donc je vais le faire de cette façon maintenant, merci pour votre temps et votre aide

Était-ce utile?

La solution

Ouvrez la console JS dans Chrome - ce que vous let est défini des points d'arrêt dans la boucle -. Et d'ajouter des montres sur les variables

A côté de cela jsonDecode ne decode - il y a encore les supports ...

Le problème est que vous décodez à chaîne comme il est semble - ce pourquoi il fend la chaîne en lettres -. Comme vous il avons écrit

JSON représente ordinaire des tableaux ... peut-être vérifier la documentation pour les paramètres de sortie corrects.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top