1

似乎无法让这个 javascript 重定向工作?建议?

我是否应该通过元刷新来做到这一点,以及如何做到这一点?

// 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 = "track.cfm?track=s&Lat=" + event.coords.latitude + "&Long=" + event.coords.longitude;

var redirectUrl = "track.cfm?track=s&Lat=" + event.coords.latitude + "&Long=" + 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,15000); 
4

3 回答 3

2

问题是变量的范围。redirectUrl您声明redirectUrlonGeoSuccess函数的本地,因此它将仅在它内部可见。对于解决方法,你可以把所有这些东西:

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

onGeoSuccess函数内部,或使redirectUrl全局,通过删除varbefore redirectUrl

     redirectUrl = "track.cfm?track=s&Lat="+...
//^-----no 'var'
于 2012-07-28T15:01:38.063 回答
0

redirectUrl在父范围内声明,并运行onGeoSuccess函数。

var redirectUrl;

function onGeoSuccess (event) {
  document.getElementById("Latitude").value =  event.coords.latitude; 
  document.getElementById("Longitude").value = event.coords.longitude;
  document.getElementById("location").href = "track.cfm?track=s&Lat=" + event.coords.latitude + "&Long=" + event.coords.longitude;

  redirectUrl = "track.cfm?track=s&Lat=" + event.coords.latitude + "&Long=" + event.coords.longitude; 

}

function onGeoError (event) {
  alert("Error code " + event.code + ". " + event.message);
}

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

onGeoSuccess(...);
setTimeout(redirect, 15000);
于 2012-07-28T15:02:01.817 回答
0

两个问题:

1) 重定向 URL 是由一个函数设置的,至少从您发布的代码来看,该函数没有被调用

2)即使它被调用,redirectUrl也是该函数的局部变量,因此超时无法访问它。

始终检查错误控制台。

于 2012-07-28T15:02:06.030 回答