2011-11-17 6 views
7

Ecco un'approssimazione del mio codice:navigator.geolocation.getCurrentPosition(): richiama il fuoco se l'utente dice "no"?

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(
     function(position) { 
      // success! 
     }, 
     function(error) { 
      // error 
     }, 
     { timeout: 10000 } 
    ); 
} else { 
    // your browser/device doesn't support geolocation 
} 

Quando questo codice viene eseguito, il browser chiede correttamente all'utente il permesso di monitorare il loro posizione fisica. Se l'utente dice "Sì", esegue correttamente la funzione specificata dal primo argomento ('successo').

Ciò che non mi è chiaro è cosa succede quando l'utente dice "no". Nei miei test fino ad ora (in Firefox 7), se l'utente dice "no", non succede nulla. In qualche modo mi aspettavo che il callback degli errori (la seconda funzione) fosse eseguito, ma non è così. Spero di reagire alla risposta negativa dell'utente (rimuovendo il collegamento che attiva questa chiamata).

risposta

8

È necessario gestirlo nella seconda richiamata su navigator.geolocation.getCurrentPosition(), che gestisce problemi come l'utente che nega la propria posizione (tra le altre cose).

navigator.geolocation.getCurrentPosition(fn, function(errorCode) { 
    if (errorCode == 1) { 
     alert('Y U NO GIVE LOCATION?'); 
    } 
}); 

W3C Spec.

List of error codes.

+4

Va bene, sembra che Firefox non si attiva QUALSIASI richiamata se si dà la risposta "Non adesso": http://stackoverflow.com/questions/6932758/firefox-5-geolocating-and-not-now-issue https://bugzilla.mozilla.org/show_bug.cgi?id=675533 Sarà, come suggerimento di Alex, attivare la richiamata di errore se si risponde con "Mai". – brianjcohen

+0

Posso vedere il punto di vista dello sviluppatore di mozilla su questo. La pagina dovrebbe avere un comportamento predefinito se non è disponibile la geolocalizzazione, ma penso anche che la frase "Not Now" è come dire "No" una volta, ma non ricordo la mia risposta più tardi. – spig

+0

Penso che dovresti vedere "non ora" come nessuna risposta, come se l'utente ignorasse completamente il popup. – Ferdy

0

piccola correzione per la risposta precedente

navigator.geolocation.getCurrentPosition(your_success_function, function(error) { 
    if (error.code == 1) { 
     alert('Y U NO GIVE LOCATION?'); 
    } 
}); 
Problemi correlati