Tôi đang cố gắng để Firefox 13 biến đối tượng vị trí địa lý thành chuỗi JSON, nhưng nó trả về một chuỗi trống thay vì biểu diễn chuỗi chính xác của đối tượng JSON của tôi. Tính năng này hoạt động tốt trong các phiên bản Chrome và Safari mới nhất cũng như trình duyệt Android. Dưới đây là mã của tôi:FF 13, IE 9: JSON stringify/geolocation object
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
}
Trong Chrome, đây quả đầu ra một đối tượng định vị, và chuỗi này:
"{"coords":{"latitude":XYZ,"heading":null,"accuracy":40,"altitudeAccuracy":null,"altitude":null,"longitude":XYZ,"speed":null},"timestamp":1339712284200}"
Tuy nhiên, trong Firefox 13 đầu ra chỉ là một chuỗi rỗng, mặc dù đối tượng định vị đó là in trên bảng điều khiển là tất cả các ý định và mục đích giống như đối tượng được Chrome hiển thị. Bất kỳ ý tưởng về những gì đang xảy ra ở đây? This có vẻ là một vấn đề liên quan, nhưng tôi cũng không thấy giải pháp nào. IE9 hiển thị cùng một hành vi, bằng cách này.
vị trí địa lý không liên quan gì đến DOM. – user123444555621
Cảm ơn! Tôi đã tìm ra cách giải quyết đơn giản là gán các thuộc tính cho một biến mới và xâu chuỗi đó, nhưng không rõ ràng tại sao nó lại làm việc trong khi mã trước đó của tôi không, mà tôi không thích. Bây giờ tôi hiểu rồi. – Daan
@ Pumbaa80 Chính xác hơn, đặc tả WebIDL xác định hành vi ở đây. Nhưng cảm thấy tự do để nitpick như mong muốn! –