【发布时间】:2010-07-16 18:15:10
【问题描述】:
我有这段代码,根据 Firebug,由于某种原因,我的 $.post 函数快速连续触发两次(用于“日志/天气”)。当我删除“if (navigator.geolocation)”时,它仍然会这样做,但是,如果我用 console.log('test') 之类的东西替换 $.post 块,它只会触发一次。
更奇怪的是,当我将 console.log('test') 放在 $.post 函数之前时,我的事件也只会触发一次。我假设 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");
});
}
编辑:好吧,还是陌生的,有时它会触发两次,有时会触发一次。同一段代码怎么会在每次执行时给出不同的结果?
编辑 2: 经过一些实验,我认为这是 Firefox 中的一个错误。为什么?因为它不仅发生在我的页面上,而且发生在其他页面上。如果我不断刷新页面,大约前 10 次 navigator.geolocation.getCurrentPosition 会触发回调函数。但是,在某个时候,它会停止这样做。一旦达到这一点,它就不适用于任何其他使用 getCurrentPosition 的网站。而且这个问题在 Chrome 甚至 IE 上都不会发生。搜索谷歌,我发现了这个:
http://groups.google.com/group/mozilla.feedback.firefox/browse_thread/thread/fecc3fb0bad6d0b8
【问题讨论】:
-
如果你告诉这个代码块是如何被调用的,它可能会有所帮助。而问题可能出在你使用
getCurrerentPosition查看这篇文章stackoverflow.com/questions/2707191/…。 -
我相信我正确使用 getCurrentPosition .. 至少根据您提供的链接中的答案。但是,得到这个。我将此代码放入某个随机网页(任何网页)上的 Firebug 命令行: navigator.geolocation.getCurrentPosition(function() { alert('Position received'); }); 40 秒内什么都没有发生,然后我的消息出现了。我刚刚尝试了 Chrome,我根本没有遇到这个问题。
标签: javascript jquery post geolocation