2012-07-28 2 views
-1

J'ai cette page de chargement bien une fois ...Javascript continu Redirect

Fondamentalement, il tire un emplacement GPS, je veux ensuite faire la redirection toutes les 10 secondes pour tirer des données GPS encore ...

Mais il ne sera pas rediriger en permanence toutes les 10 secondes ...

What up - par les regards des choses qu'il devrait ...

<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> 
+0

Cela peut être un problème de portée. Il semble que redirectUrl peut être local à sa fonction d'origine où sa valeur a été définie. Je pourrais toutefois avoir tord. –

+0

N'est-ce pas la même question que celle que vous avez posée plus tôt? http://stackoverflow.com/questions/11702088/javascript-redirect-with-settimout-not-working Ensuite, comme maintenant, on ne sait pas comment ou si la fonction 'onGeoSuccess' est appelée - c'est crucial, car c'est là que le La chaîne de redirection est définie. – Utkanos

+0

J'essaie de garder les problèmes séparés et ne pas brancher la poste - la redirection a fonctionné sur le précédent - mais ne sera pas continuellement rediriger avec de nouvelles données gps –

Répondre

0

quelques questions ici.

1) Comme le dit jay c, l'un est que le rappel n'est exécuté qu'une seule fois. Pour résoudre ce problème, vous pouvez soit faire ce qui est dit avec setInterval, ou, à la fin de redirect, vous venez de définir à nouveau la minuterie ...

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

2) l'URL est toujours le même si l'emplacement n » t changé. Le navigateur peut le remarquer et ne pas actualiser l'URL. Vous pouvez le forcer avec une action de rechargement de la fenêtre, ou vous pouvez garantir la fraîcheur de l'URL en y attachant l'horodatage.

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

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