Ich versuche, Firefox 13 ein Geolocation-Position-Objekt in eine JSON-Zeichenfolge zu drehen, aber es gibt eine leere Zeichenfolge anstelle der richtigen Zeichenfolgendarstellung meines JSON-Objekts. Dies funktioniert in den neuesten Versionen von Chrome und Safari sowie im Android-Browser. Hier ist mein Code:FF 13, IE 9: JSON stringify/Geolocation-Objekt
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
//Success handler
console.log(position); //This outputs the position object to the console
var gps = JSON.stringify(position);
console.log(gps); //This outputs an empty string!
},
function (error)
{
//Handle error
},
{ maximumAge: 3000, timeout: 60000, enableHighAccuracy: true }
);
}
else {
//Handle error
}
In Chrome, das gibt ein Geolocation-Objekt, und diese Zeichenfolge:
"{"coords":{"latitude":XYZ,"heading":null,"accuracy":40,"altitudeAccuracy":null,"altitude":null,"longitude":XYZ,"speed":null},"timestamp":1339712284200}"
jedoch in Firefox 13 die Ausgabe nur eine leere Zeichenfolge ist, obwohl das Geolocation-Objekt, das ist Der Ausdruck auf der Konsole entspricht im Grunde dem von Chrome angezeigten Objekt. Irgendwelche Ideen, was hier schief läuft? This scheint ein verwandtes Problem zu sein, aber ich sehe dort auch keine Lösung. IE9 zeigt übrigens das gleiche Verhalten.
Geolocation hat nichts mit DOM zu tun. – user123444555621
Danke! Ich habe herausgefunden, dass ein Workaround einfach darin besteht, die Eigenschaften einer neuen Variablen zuzuordnen und sie zu stringifizieren, aber es war mir unklar, warum das funktionierte, während mein früherer Code nicht funktionierte, was ich nicht mochte. Jetzt verstehe ich. – Daan
@ Pumbaa80 Genauer gesagt definiert die WebIDL-Spezifikation das Verhalten hier. Aber zögern Sie nicht, wie gewünscht! –