サイトのヘッダーのスクリプトに setTimeout がある場合、ユーザーがページからページに移動しても、再起動せずに実行し続けることができます。これは、Cookie を使用して行うことができるものですか? 私が見ることができる例はありますか?
3 に答える
これには 2 つのオプションがあります。
- URL 文字列に GET クエリを追加します。これは www.ex.com/index.html?time=300024 のようになります
すべてのアンカー タグのクリックをキャプチャし、それが自分のサイトを指している場合は、URL に ?time=${time} を追加します。次に、次のページで、タイマーを初期化するときに、次のページの location.search で時間を区切ります。ページと DOM が読み込まれる間に遅延が発生するため、このメソッドは正確な時間を保持しないことに注意してください。
javascript の location.search からパラメーターを取得する
- ajax を使用して Web サイトのコンテンツをロードする
このようにして、サイトの内部部分へのリンクが実際に AJAX を使用して新しいコンテンツをクエリするように、サイトを完全に再設計します。つまり、ページ自体を変更することはなく、javascript タイムアウトがアンロードされることもありません。これは、最も推奨される方法ではありません。基本的な例を次に示します。
localStorage を使用して状態を保存します。
通常の setTimeout をセットアップします。開始時に、localStorage から必要な状態データをロードします。データを更新するたびに、永続化のためにデータを localStorage に保存する必要があります。
これを行う方法について具体的な詳細が必要な場合は、質問とともにコメントを残してください。回答を試みます。
セッション Cookie を使用して、setTimeout コードを実行する時間を節約します。
各ページで:
- Cookie に値があるかどうかを確認します。そうでない場合は、次のように設定
Date.now() + delayValue
します。ここで、delayValue はミリ秒単位で待機する時間です。 - チェック
cookieValue - Date.now()
-- > 0 の場合は、それを setTimeout タイマー値として使用します。<= 0 の場合、タイマー関数は既に実行されているはずです