特定のクリック イベントの 10 秒後に JavaScript を実行しようとしていました。setTimeout
setTimeout(function () {
alert('hello');
}, 10000);
クリック後に同じページにいる場合は機能しますが、他のページに移動すると機能しません。setTimeout
したがって、アプリケーション全体ではなく、特定のページに関して機能すると仮定するのは正しいことです。
私が達成しようとしていることを行う方法はありますか。
特定のクリック イベントの 10 秒後に JavaScript を実行しようとしていました。setTimeout
setTimeout(function () {
alert('hello');
}, 10000);
クリック後に同じページにいる場合は機能しますが、他のページに移動すると機能しません。setTimeout
したがって、アプリケーション全体ではなく、特定のページに関して機能すると仮定するのは正しいことです。
私が達成しようとしていることを行う方法はありますか。
ブラウザーで発生するすべてのことは、ドキュメントにバインドされています。現在のドキュメント (ページ) から離れた場所に移動すると、予想どおり、タイマーを含めて廃止されます。
したがって、ここで試みていることは、タイマーを使用するだけでは不可能です。
(または) タイマーの開始時刻と終了時刻を含むアイテムを記述し、新しいページ (同じオリジンからのものである場合) からアイテムを読み取り、差を計算して新しいタイマーを開始する (または追加する) ことができます。ナビゲート先の URL の一部としてのパラメーター)。localStorage
sessionStorage
別のページに移動すると、ブラウザは新しいページをロードし、ゲーム オーバーして新しいゲームを開始するのと同じように、古いページの setTimeout などはすべて失われます。
すべてのページが同じDOMにあり、結果を達成できるシングルページアプリを試すことができます
はい、それが掲載されているページに関してです。タイムアウトが発生したかどうかを示すフラグを追加できます
次に、ユーザーが別のページに移動した場合、onunload イベントでそのフラグを確認できます。設定されていてまだ呼び出されていない場合は、単に呼び出します。