解説
ブラウザのヒストリーによるページ遷移を無効にするための方法。更新日:2016年12月31日
ブラウザの「戻る」ボタンをクリックしても、本来の1つ前の URL ではなく、偽装した履歴が取り出される。
このままだとその偽装した履歴の URL に移動してしまうのだが、その前に return で強制的に処理を止めているので何も起らない。 また履歴を取り出した直後に再度ニセの履歴を追加しているので、更にもう一度「戻る」をクリックしても同じ処理が繰り返されて、結局戻れない、ということになる。
使用方法
使用方法
DisableHistoryBack();
パラメタ
なし。
戻り値
なし。
コード
ヒストリバック無効化関数
/*----------------------------------------------------------------------------------------------------------
ヒストリバック無効化関数
HTML5 の pushState/popState でヒストリバックを無効にする
----------------------------------------------------------------------------------------------------------*/
function DisableHistoryBack()
{
// History API が使えるブラウザかどうかをチェック
if( window.history && window.history.pushState )
{
// ブラウザ履歴に1つ追加
history.pushState( "inside", null, "" );
$(window).on
(
"popstate",
function( event )
{
// このページで「戻る」を実行
if( !event.originalEvent.state )
{
// もう一度履歴を操作して終了
history.pushState( "inside", null, "" );
return;
}
}
);
}
}
必須要素
情報
- jQuery
注意事項
重要
- なし。
更新履歴
- 2016/12/31 … 浅野 利博
- 新規作成