8

back関数の代わりにpushState関数が呼び出された場合、titleと同様に、別のonstatechangeイベントを実行できるようにしたいと考えています。または、go関数が負または正である場合history.jsで状態がどの方向を向いているかを知る方法はありますか?

例:History.pushState()またはHistory.go(1)が呼び出された場合

、私はHistory.back()またはHistory.go(-1)が呼び出された場合statechangeイベントのコールバックがforwardPushState

になりたい、私はstatechangeイベントのコールバックがbackwardsPushState

+1

現在のページが最後に訪問したページにリダイレクトする場合は、最後の訪問のページを追跡し、チャンスは方向が逆方向です。 – adeneo

+0

例で説明すると良いでしょう。に関して –

+0

PushStateはスタック内の新しい状態をプッシュします(状態は新しいアクションの後に保存されるデータです)。背中合わせとは関係がありません。 BackとGoはスタック内のプッシュされた状態をナビゲートする関数です。私はあなたの編集でpushStateとgo(1)が同等であると思っているように見えるので、これを言う。 –

答えて

6

になりたいです状態とは、ページに関連するいくつかのデータです(ユーザーがブラウザで見ると)。ユーザーが特定のページにいたい場合、このページは、私が思うように、彼が戻るボタンのクリックから来ているか、または、前方のボタンのクリックから来ている場合でも同じです。

PushStateはスタック内の新しい状態をプッシュします。 backgoとの関係はありません。 Backおよびgoは、スタック内のプッシュされた状態をナビゲートする関数です。私はあなたの編集でpushStateとgo(1)が同等であると思っているように見えるので、これを言う。

ユーザがどの方向から来たのかを知りたい場合は、onstatechangeイベントを分析して、方向を保存するパラメータがあるかどうかを知る必要があります。私はまだやり方を知らない。

私が考えている主なことは、goまたはgo(1)またはbackと関係がないことです。

+0

私は、 'pushState'と' go(1) 'が同じ、ただの例。残念ながら実際には何の関係もない、または探しているものを行うためのリンクがないので、@adeneoが言ったような何かをしなければならない – Ascherer

-1

これはおそらくあなたのために働くでしょう。

<html> 
<body onunload="disableBackButton()"> 
<h1>You should not come back to this page</h1> 
</body> 
<script> 
function disableBackButton() 
{ 
    window.history.forward(); 
} 
setTimeout("disableBackButton()", 0); 
</script> 
</html> 

上記のコードは、このページを読み込むために戻るボタンを使用するのが難しくなります。

第二には、

を試してみてください以下のコードは、別のスタックオーバーフローから取られました。

detect back button click in browser

window.onload = function() { 
if (typeof history.pushState === "function") { 
    history.pushState("jibberish", null, null); 
    window.onpopstate = function() { 
     history.pushState('newjibberish', null, null); 
     // Handle the back (or forward) buttons here 
     // Will NOT handle refresh, use onbeforeunload for this. 
    }; 
} 
else { 
    var ignoreHashChange = true; 
    window.onhashchange = function() { 
     if (!ignoreHashChange) { 
      ignoreHashChange = true; 
      window.location.hash = Math.random(); 
      // Detect and redirect change here 
      // Works in older FF and IE9 
      // * it does mess with your hash symbol (anchor?) pound sign 
      // delimiter on the end of the URL 
     } 
     else { 
      ignoreHashChange = false; 
     } 
    }; 
} 

}

+0

バックボタンを無効にしようとしていない – Ascherer

関連する問題