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削除してグローバルにする:varredirectUrl

     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

2つの問題:

1)リダイレクトURLは、少なくとも投稿したコードからは呼び出されていない関数によって設定されています

2)呼び出されたとしても、redirectUrlはその関数のローカル変数であるため、タイムアウトはそれにアクセスできません。

常にエラーコンソールを確認してください。

于 2012-07-28T15:02:06.030 に答える