필자는이 코드를 가지고 있으며 어떤 이유에서 Firebug에 따라 $ $. post 함수가 두 번 연속으로 발생합니다 ('저널/날씨'의 경우). "if (navigator.geolocation)"를 제거해도 여전히이 작업을 수행하지만, $ .post 블록을 console.log ('test')와 같은 것으로 바꾸면 한 번만 실행됩니다.
$ .post 함수 앞에 console.log ('test')를 배치하면 내 이벤트가 한 번만 발생합니다. 나는 jQuery로 뭔가 이상하게 진행되고 있다고 가정하고있다. 아무도 아이디어가 없나요?
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 2 : 약간의 실험 후, 나는 이것이 Firefox의 버그라고 생각합니다. 왜? 왜냐하면 그것은 내 페이지뿐만 아니라 다른 것들에서도 발생하기 때문입니다. 내 페이지를 새로 고치면 navigator.geolocation.getCurrentPosition의 대략 10 배는 콜백 함수를 시작합니다. 그러나 한순간에 그 일을 그만 둔다. 그리고 일단이 점에 도달하면 getCurrentPosition을 사용하는 다른 웹 사이트에서는 작동하지 않습니다. 그리고이 문제는 Chrome이나 심지어 IE에서도 발생하지 않습니다. 따라서 console.log
은 아마도 아직 초기화되지 않는 - 페이지로드가 완료되기 전에 코드 같은 소리
http://groups.google.com/group/mozilla.feedback.firefox/browse_thread/thread/fecc3fb0bad6d0b8
이 코드 블록이 어떻게 호출되는지 알려면 도움이 될 수 있습니다. 그리고 문제는 당신이'getCurrerentPosition'을 사용할 때 발생할 수 있습니다.이 기사를 확인하십시오. http://stackoverflow.com/questions/2707191/unable-to-cope-with-the-asynchronous-nature-of-navigator-geolocation. – qw3n
나는 getCurrentPosition을 올바르게 사용하고 있다고 생각합니다. 적어도 제공된 링크의 답변에 따르면. 그러나 이것을 얻으십시오. 이 코드를 임의의 웹 페이지 (임의의 웹 페이지)에서 Firebug 명령 줄에 넣습니다. navigator.geolocation.getCurrentPosition (function() {Position (획득)};}); 40 초 동안 아무런 반응이 없으면 내 메시지가 나타납니다. Chrome을 사용해 보았는데이 문제가 전혀 발생하지 않습니다. – Nick