次のスクリプトは、次のことを行うことになっています。
ページの読み込み時に 20 秒のタイムアウトが設定され、必要なコンテンツが ajax 呼び出しで自動的に更新されます。ユーザーが RELOAD というボタンをクリックすると、関数が呼び出されreloadContent()
、タイムアウトがクリアされ、再度設定されます。
したがって、基本的に、ユーザーが手動でリロードした場合はタイムアウトを再開して、あまりにも近い呼び出しを避ける必要があります。
タイマーがリセットされているように見えるため、半分は機能しますがreloadContentTimeout()
、手動でロードされたアクションの 10 秒後に実行されます。これは、タイムアウト時間の半分です。
私は何か間違ったことをしていますか?
ありがとう!
/**
* Reload content
*/
function reloadContent(elementId) {
$(elementId).load(window.location.href+' '+elementId+' > *');
clearTimeout(timeoutId);
reloadContentTimeout(false);
}
/**
* Reload content every X seconds (20)
*/
var timeoutId;
function reloadContentTimeout(now)
{
now = (typeof now === 'undefined' ? true : now);
if( now ) {
reloadContent('#table-content');
}
timeoutId = setTimeout(reloadContentTimeout, 1000 * 20);
}
reloadContentTimeout(false);