解説

ブラウザのヒストリーによるページ遷移を無効にするための方法。
更新日: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 … 浅野 利博
新規作成

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.