0

次のスクリプトは、次のことを行うことになっています。

ページの読み込み時に 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);
4

2 に答える 2