2012-02-09 8 views
14

ठीक है इसलिए मैं एक ऐप बना रहा हूं जो जिओलोकेशन एपीआई का उपयोग करता है।navigator.geolocation.getCurrentPosition कॉलबैक फ़ायरफ़ॉक्स पर काम नहीं करेगा 10

window.onload = function() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       alert('it works'); 
      }, function(error) { 
       alert('Error occurred. Error code: ' + error.code);   
      }); 
     }else{ 
      alert('no geolocation support'); 
     } 
    }; 

तो, उदाहरण के लिए, क्रोम में, पेज चलाने के बाद मैं अगर मैं साझा करना चाहते हैं के लिए कहा जाएगा: मैं नहीं कर सकते फ़ायरफ़ॉक्स से 10 यहाँ पर काम करने के लिए कोड का एक बहुत ही सरल टुकड़ा पाने के लिए लग रहे हैं कोड है मेरा स्थान, और हाँ पर क्लिक करने के बाद यह मुझे "यह काम करता है" के साथ चेतावनी देगा। अब फ़ायरफ़ॉक्स 10 में यह मुझे मेरे स्थान को साझा करने के लिए कहेंगे और साझा करने के बाद यह कुछ भी नहीं करता है ... मैं किसी भी प्रकार के कोड को चलाने के लिए कॉलबैक प्राप्त करने का प्रयास कर रहा हूं लेकिन कोई भाग्य नहीं है। क्या यह फ़ायरफ़ॉक्स के साथ एक बग है या क्या मैं कुछ गलत कर रहा हूं? मेरे पास परीक्षण के लिए यहां कोड का एक उदाहरण है: http://dev-hub.com/geolocation.html

संपादित करें --- मेरे ओएस विंडोज 7 64 बिट

+0

आप किस हार्डवेयर पर फ़ायरफ़ॉक्स चला रहे हैं? –

+0

विंडोज 7 64 – Zaptree

+0

पर जिओलोकेशन सुविधा के लिए एक मोबाइल डिवाइस की आवश्यकता होती है जो भौगोलिक स्थान का समर्थन करता है। [आप यहां और अधिक जानकारी प्राप्त कर सकते हैं।] (Http://stackoverflow.com/questions/1349064/which-devices-support-javascript-geolocation-via-navigator-geolocation) –

उत्तर

18

मैंने पाया कि समस्या वास्तव में फ़ायरफ़ॉक्स है सब ठीक है और यह मज़बूती से या समान रूप से सभी प्लेटफार्मों पर काम नहीं करता है।

window.onload = function() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       alert('it works'); 
      }, function(error) { 
       alert('Error occurred. Error code: ' + error.code);   
      },{timeout:5000}); 
     }else{ 
      alert('no geolocation support'); 
     } 
    }; 

आप यहाँ टाइमआउट देख सकते हैं: http://dev.w3.org/geo/api/spec-source.html को देखते हुए मैं जोड़ने के लिए निम्नलिखित विकल्प पाया 5000 में जोड़ा गया है जिसका अर्थ है कि यदि किसी कारण से ब्राउज़र अधिक तो 5000ms (5 सेकंड) लेता है तो एक फेंक टाइमआउट त्रुटि (वह त्रुटि कोड 3 है)। तो अब जब भी फ़ायरफ़ॉक्स काम नहीं कर रहा है, कम से कम त्रुटि कॉलबैक चलाता है और मुझे "त्रुटि हुई। त्रुटि कोड: 3" का एक चेतावनी संदेश मिलता है।

स्पष्ट रूप से टाइमआउट का डिफ़ॉल्ट मान अनंत है इसलिए यह कभी भी समाप्त नहीं होता है ... क्रोम 100% विश्वसनीय है लेकिन फ़ायरफ़ॉक्स मेरी मशीन पर लगभग 10% विश्वसनीय है जो बहुत निराशाजनक है। मेरे अन्य कंप्यूटर पर जो विंडोज एक्सपी चला रहा है और उसी नेटवर्क पर है, फ़ायरफ़ॉक्स 100% विश्वसनीय लगता है।

+7

50000 एमएस = 50 सेकेंड ... तो शायद 5000 एमएस (3 शून्य) –

0

मैं तुम्हारे लिए इस उदाहरण दिया है:

if(!navigator.geolocation){ 
alert('El Navegador no soporta GeoLocalización'); 
} 

function doGeo(position) 
{ 
    var coords = position.coords.latitude + '+' + position.coords.longitude; 
    var url = 'https://maps.google.es/?q=' + coords; 
    $("#lat").html("Latitud: " + position.coords.latitude); 
    $("#lon").html("Longitud: " + position.coords.longitude); 
    $("#acc").html("Precisión: " + position.coords.accuracy); 
    $("#alt").html("Altitud: " + position.coords.speed);   
    var link = '<a class="btn btn-primary" href="' + url + '" target="_blank">Ir a la  Ubicación en Google Maps</a>'; 
    $(link).appendTo('#GoogleMaps'); 
} 

function lost() 
{ 
    alert('Algo salió mal, Intentelo más tarde...'); 
}; 
navigator.geolocation.watchPosition(doGeo, lost, {maximumAge:0,enableHighAccuracy:true}   ); 

http://jsfiddle.net/aA2zv/35/

आशा है कि यह मदद करता है!

+0

Altitud == गति का उपयोग करना चाहिए? –

+0

खो गए कार्य से संदेश मिला :( –

संबंधित मुद्दे