2

私のページには、リスナーがいますwindow.onpopstate

ユーザーの戻る矢印をトラップして、独自のルーチンを実行したい

ただしwindow.onpopstate、1) ページが最初に読み込まれたとき、2) 再読み込みされたとき、および 3) ユーザーが戻る矢印を押したときに起動します

状態空間フラグを作成して確認できましたしかし、何が起こっているのかをイベント自体から判断する方がより自然です。

イベントがロードまたは戻るボタンから発生したかどうかを判断する本質的な方法はありますか? 2 つのイベントを調べると、ほとんど同じように見えます。

4

2 に答える 2

1

このwindow.onpopstateイベントは、ユーザーが同じドキュメントの 2 つの履歴エントリ間を移動したとき、つまりアクティブな履歴エントリが変更されるたびにトリガーされます。

戻るボタンをクリックしたとき、ページの読み込み時、およびページの再読み込み時に発生します (Firefox はページの読み込み時にこのイベントを発行しません)。したがって、表示されている動作は意図されたものです。

そして、戻るボタンについては、このイベントを使用して戻るボタンのクリックを検出する方法はないと思います。

于 2013-03-25T05:23:35.750 に答える
0

ブラウザの popstate バグを補うことができます。誰かが私のエディタを使用していて、ときどきナビゲーションをトリガーする Backspace ボタンを押すと (これはデフォルトである必要はありませんが、誰もがその位置に適しているわけではありません)、キャンセルして (はい、できます)、アドレスバーを で修正しますhistory.go(1);。さまざまな人々がさまざまなコンテキストでこれを必要とするため、依存関係に関連するコードをここに投稿することはしませんが、必要なものの基礎を形成します。

window.onpopstate = function(e)
{
 if (id_('editor') && is_node_parent(document.activeElement,id_('editor')))
 {
  e.preventDefault();
  history.go(1);
 }
}
于 2017-07-22T02:21:25.327 に答える