遅延が何であれ、1回だけ機能させたい場合は、実行した事実をlocalStorageに保存できます。
function refreshPage(){
alert('page will refresh.');
document.location.reload(true);
localStorage['refreshDone'] = 'yes';
}
if (!localStorage['refreshDone']) {
setTimeout('refreshPage()', 3000);
}
ただし、ページをリロードするたびにウィンドウ変数が失われるため、タイムアウトまたは間隔を単純にクリアすることはできません。
正確な目標がわからないため、最近更新していない場合に更新したい場合は、localStorageにタイムスタンプを保存できます。
function refreshPage(){
alert('page will refresh.');
document.location.reload(true);
localStorage['refresh'] = new Date().getTime();
}
var lastTimeRefresh = parseInt(localStorage['refresh']||'0', 10);
if (new Date().getTime() - lastTimeRefresh > 30*60*1000) { // 30 minutes
setTimeout('refreshPage()', 3000);
}