似乎无法让这个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);
答案 0 :(得分:2)
问题是redirectUrl
变量的范围。您已将redirectUrl
声明为onGeoSuccess
函数的本地,因此仅在其内部可见。对于解决方法,您可以放置所有这些内容:
function redirect()
{
window.location = redirectUrl;
}
setTimeout(redirect,15000);
通过在onGeoSuccess
之前删除redirectUrl
,在var
函数内部或使redirectUrl
全局变为全局:
redirectUrl = "track.cfm?track=s&Lat="+...
//^-----no 'var'
答案 1 :(得分: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);
答案 2 :(得分:0)
两个问题:
1)重定向网址由一个函数设置,该函数至少从您发布的代码中未被调用
2)即使被调用,redirectUrl
也是该函数的局部变量,因此超时无法访问它。
始终检查错误控制台。