2

特定のクリック イベントの 10 秒後に JavaScript を実行しようとしていました。setTimeout

setTimeout(function () {
    alert('hello');
}, 10000);

クリック後に同じページにいる場合は機能しますが、他のページに移動すると機能しません。setTimeoutしたがって、アプリケーション全体ではなく、特定のページに関して機能すると仮定するのは正しいことです。

私が達成しようとしていることを行う方法はありますか。

4

5 に答える 5

8

ブラウザーで発生するすべてのことは、ドキュメントにバインドされています。現在のドキュメント (ページ) から離れた場所に移動すると、予想どおり、タイマーを含めて廃止されます。

したがって、ここで試みていることは、タイマーを使用するだけでは不可能です。

(または) タイマーの開始時刻と終了時刻含むアイテムを記述し、新しいページ (同じオリジンからのものである場合) からアイテムを読み取り、差を計算して新しいタイマーを開始する (または追加する) ことができます。ナビゲート先の URL の一部としてのパラメーター)。localStoragesessionStorage

于 2013-10-17T08:14:55.967 に答える
0

別のページに移動すると、ブラウザは新しいページをロードし、ゲーム オーバーして新しいゲームを開始するのと同じように、古いページの setTimeout などはすべて失われます。

すべてのページが同じDOMにあり、結果を達成できるシングルページアプリを試すことができます

于 2013-10-17T08:18:40.590 に答える
0

はい、それが掲載されているページに関してです。タイムアウトが発生したかどうかを示すフラグを追加できます

  • 未設定
  • 設定されているが実行されていない、または
  • 設定され、すでに実行されています。

次に、ユーザーが別のページに移動した場合、onunload イベントでそのフラグを確認できます。設定されていてまだ呼び出されていない場合は、単に呼び出します。

于 2013-10-17T08:13:48.407 に答える