Преобразовать объект в строку в Firefox

Я хочу преобразовать Geo Location Position Object в String, чтобы сохранить его в localStorage для последующего использования.

На данный момент я сделал ниже методы

$.toJSON(position)
JSON.stringify(position) // position is the object which return from Geo Location Success callback
jQuery.stringify(position)

Используя все вышеперечисленное, я не могу получить String в Firefox.

Также проверил этот one, но это не помогло как таковое

Результат консоли FireFox

введите здесь описание изображения

Результат консоли Chrome

введите здесь описание изображения

Демонстрационная ссылка с использованием jQuery.stringify(position)


person Blu    schedule 19.02.2014    source источник
comment
Является ли position объектом с содержимым?   -  person Cerbrus    schedule 19.02.2014
comment
да, он содержит временные метки и координаты текущего положения @Cerbrus   -  person Blu    schedule 19.02.2014
comment
А вы пробовали localStorage.setItem('position', JSON.stringify(position));?   -  person Cerbrus    schedule 19.02.2014
comment
Да, в chrome он хранится, а в firefox - только {} это   -  person Blu    schedule 19.02.2014
comment
Итак, это пустой объект. Я подозреваю, что API геолокации на вашем FF не имеет доступа к данным...   -  person Cerbrus    schedule 19.02.2014
comment
я проверил через for(key in position)..., он показывает данные, но каждый плагин, который я использую для преобразования в строку, дает мне пустую строку, например {}   -  person Blu    schedule 19.02.2014
comment
А console.log(position) логирует нормальный объект геолокации?   -  person Cerbrus    schedule 19.02.2014
comment
да правильно показывает   -  person Blu    schedule 19.02.2014
comment
@Cerbrus, я обновляю вопрос с выходным изображением консоли и jsFiddle демо   -  person Blu    schedule 19.02.2014
comment
Я довольно озадачен. Я понятия не имею, почему свойства не передаются... Можете попробовать .stringify(position.timestamp)?   -  person Cerbrus    schedule 19.02.2014
comment
.stringify(position.timestamp) в консоли отображалась только отметка времени.   -  person Blu    schedule 19.02.2014
comment
Хм, а что, если вы создадите временный объект, скопируете свойства из объекта местоположения во временный, а затем подстроите временный объект?   -  person Cerbrus    schedule 19.02.2014
comment
var newPosition = position; нравится??   -  person Blu    schedule 19.02.2014


Ответы (1)


Этот пост объясняет, почему это происходит в FF, но не в Хром.

В качестве обходного пути вы можете сделать:

navigator.geolocation.getCurrentPosition(function(position) {
    var myPosition={timestamp: position.timestamp,
                    latitude:position.coords.latitude,
                    longitude:position.coords.longitude,
                    altitude:position.coords.altitude,
                    ...
                    }
    localStorage.position=JSON.stringify(myPosition);

});
person ojovirtual    schedule 19.02.2014