Domanda

Quindi, sto scrivendo un po 'Greasemonkey userscript e il suo funzionamento benissimo in Firefox se io provo a farlo funzionare con Tampermonkey sul Googles Chrome ottengo erros strani durante la codifica / decodifica array.

I cercare di rendere compatibile il cross browser script così ho dovuto scrivere una funzione per decidere quale JSON metodi per utilizzare

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);
  }
}

Per semplificare le cose ora ho ridotto il codice per un semplice array e il tentativo di codifica / decodifica e iterare

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]); 
}

Mi aspetto che l'output di essere

string1
string2

invece cromo mi dà questo

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

Qualcuno ha qualche idea di come risolvere questo, o perché Chrome sta facendo questo?

Modifica 1: Chrome versione 15.0.874.121 m

EDIT 2: non hanno ancora capito, ma quando ho provato con un oggetto invece di un array funziona così farò in questo modo ora, grazie per il vostro tempo e aiuto

È stato utile?

Soluzione

console Apri in Chrome JS - questo ti permette di impostare i punti di interruzione nel ciclo -. E aggiungere orologi sulle variabili

Oltre che jsonDecode non decodifica - c'è ancora la parentesi ...

Il problema è che a decodificare a stringa come è sembra - che il motivo per cui affetta la stringa in lettere -. Proprio come codificato che

JSON ordinaria rappresenta array ... forse controllare la documentazione per i parametri di output corretti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top