J'ai ce code, et pour une raison quelconque, ma fonction $ .post se déclenche deux fois de suite (pour 'journal/météo') selon Firebug. Il le fait quand je supprime le "if (navigator.geolocation)", cependant, si je remplace le bloc $ .post par quelque chose comme console.log ('test'), il ne se déclenche qu'une fois. Ce qui est encore plus bizarre, c'est quand je place console.log ('test') avant la fonction $ .post, alors mon événement ne se déclenche qu'une seule fois. Je suppose que quelque chose se passe bizarre avec jQuery. Quelqu'un a des idées?
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position)
{
$.post('journal/weather', {latitude: position.coords.latitude, longitude: position.coords.longitude}, function(result)
{
if (typeof(result.current.temp) != 'undefined')
{
global.temperature = parseInt(result.current.temp, 10);
global.temperature_slider.slider('value', global.temperature);
}
}, "json");
});
}
EDIT: Ok, plus étrange encore, parfois il se déclenche deux fois, parfois une fois. Comment le même morceau de code peut-il donner des résultats différents chaque fois qu'il est exécuté? Après quelques expérimentations, je pense que c'est un bug dans Firefox. Pourquoi? Parce que cela n'arrive pas seulement avec ma page, mais avec les autres. Si je continue d'actualiser ma page, à peu près les 10 premières fois le navigateur.geolocation.getCurrentPosition déclenche la fonction de rappel. Cependant, à un moment donné, il cesse de le faire. Et une fois qu'il atteint ce point, il ne fonctionne pas pour tout autre site Web qui utilise getCurrentPosition. Et ce problème n'arrive jamais sur Chrome ou même IE. Recherche Google, je trouve ceci:
http://groups.google.com/group/mozilla.feedback.firefox/browse_thread/thread/fecc3fb0bad6d0b8
Cela peut être utile si vous avez indiqué comment ce bloc de code était appelé. Et le problème peut être dans votre utilisation de 'getCurrerentPosition' vérifier cet article http://stackoverflow.com/questions/2707191/unable-to-cope-with-the-asynchronous-nature-of-navigator-geolocation. – qw3n
Je crois que j'utilise getCurrentPosition correctement ... au moins en fonction des réponses dans le lien que vous avez fourni. Cependant, obtenez ceci. J'ai mis ce code dans la ligne de commande Firebug sur une page Web aléatoire (n'importe quelle page Web): navigator.geolocation.getCurrentPosition (function() {alert ('Position obtenue');}); Rien ne se passe pendant 40 secondes, puis mon message apparaît. Et j'ai juste essayé Chrome et je ne reçois pas ce problème du tout. – Nick