地理定位在 x 次尝试后挂起,在浏览器重新启动后工作
Posted
技术标签:
【中文标题】地理定位在 x 次尝试后挂起,在浏览器重新启动后工作【英文标题】:Geolocation hangs after x attemps, works after browser restart 【发布时间】:2010-12-06 11:39:00 【问题描述】:我正在编写一个需要获取我的地理位置的脚本。它在大多数情况下都可以工作,但是不时地不获取地理位置,我必须重新启动浏览器才能使其再次工作。这发生在 Safari 和 FF 中(未在 IE 和 Chrome 中测试)。有人知道是什么原因造成的吗?我正在使用“html 5”一书中的这段代码。
<script type="text/javascript">
function loadDemo()
if(navigator.geolocation)
document.getElementById("status").innerHTML = "HTML5 Geolocation is supported in your browser.";
navigator.geolocation.getCurrentPosition(updateLocation);
function updateLocation(position)
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
if (!latitude || !longitude)
document.getElementById("status").innerHTML = "HTML5 Geolocation is supported in your browser, but location is currently not available.";
return;
document.getElementById("latitude").innerHTML = latitude;
document.getElementById("longitude").innerHTML = longitude;
【问题讨论】:
【参考方案1】:FF 有时会挂起,不了解 safari。据我所知,它在 IE 中不起作用。到目前为止,它似乎在 Chrome 中运行良好。 您可以通过设置超时来“解决”这个问题。它仍然不起作用,但至少脚本会在一段时间后终止。我使用此代码。 如果您找到了好的解决方法,请告诉我。
navigator.geolocation.getCurrentPosition(
function(position)
//succes handler
,
function errorCallback(error)
//error handler
,
enableHighAccuracy:false,
maximumAge:Infinity,
timeout:5000
);
【讨论】:
我在 PC 上的 Chrome 和 android 浏览器中都遇到了这个问题,添加这个 sn-p 使代码完全停止挂起,即使我将超时更改为 10000 毫秒。我相信这与maxiumumAge有关。对我来说不幸的是,我的 html5 应用程序必须准确地跟踪用户的位置,所以我不能将 maximumAge 设置为无穷大。我用 enableHighAccuracy:true, maximumAge:0, timeout: 10000 再次尝试了这个,它仍然在愉快地搅拌。我相信简单地为这些参数提供值会以某种方式阻止它锁定。以上是关于地理定位在 x 次尝试后挂起,在浏览器重新启动后工作的主要内容,如果未能解决你的问题,请参考以下文章
node.js http.get 在向远程站点发出 5 次请求后挂起
Chrome 在传输一定数量的数据后挂起 - 等待可用的套接字