-1

我有这个页面加载一次很好......

基本上它正在拉一个gps位置,然后我希望它每10秒进行一次重定向以再次拉取gps数据......

但它不会每 10 秒不断重定向...

怎么了-从外观上看它应该...

  <script type="text/javascript"> 

// Get a single location update
function getLocationConstant()
{
    if(navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(onGeoSuccess,onGeoError,{enableHighAccuracy:true,maximumAge:0});
    } else {
        alert("Your browser or device doesn't support Geolocation");
    }
}

// If we have a successful location update
function onGeoSuccess(event)
{
    document.getElementById("Latitude").value =  event.coords.latitude; 
    document.getElementById("Longitude").value = event.coords.longitude;
    document.getElementById("location").href = "track2.cfm?track=s&GPSLat=" + event.coords.latitude + "&GPSLong=" + event.coords.longitude;

    redirectUrl = "track2.cfm?track=y&GPSLat=" + event.coords.latitude + "&GPSLong=" + event.coords.longitude; 

    gpslat = event.coords.latitude; 
    gpslong = event.coords.longitude; 

}

// If something has gone wrong with the geolocation request
function onGeoError(event)
{
    alert("Error code " + event.code + ". " + event.message);
}

function redirect() 
{ 
    window.location = redirectUrl; 
} 
setTimeout(redirect,10000); 

 </script>
4

1 回答 1

0

这里有几个问题。

1)就像 jay c 说的,一个是回调只运行一次。要解决这个问题,您可以执行 setInterval 所说的操作,或者,在重定向结束时,您只需再次设置计时器……</p>

function redirect() {
    window.location = redirectUrl;
    setTimeout(redirect, 10000);
}

2) 如果位置没有改变,URL 总是相同的。浏览器可能会注意到这一点并且不会刷新 url。您可以通过一些窗口重新加载操作来强制它,或者您可以通过附加时间戳来保证 url 的新鲜度。

var currentTime = new Date();
var milliseconds = currentTime.getTime();

redirectUrl = "track2.cfm?track=y&GPSLat=" + event.coords.latitude + "&GPSLong=" + event.coords.longitude + "&time=" + milliseconds;
于 2012-07-28T17:31:33.283 回答