トップ «前の日記(2009年09月27日) 最新 次の日記(2009年10月04日)» 編集

Masa's blog

検索キーワード:

2009年09月30日 javascript [戻る]ボタンの抑止(禁止) [長年日記]

_ javascript [戻る]ボタンの抑止(禁止)

CGIを作成していて、画面遷移の都合上 [戻る]ボタンを抑止したい場合があるが、Internet ExplorerFirefoxの両方で実現しようとするとちょっと手間取ったのでメモしておく。

//============================================================
//
// [戻る]で戻って来たら強制的に元に進める
//
//============================================================
//
// ページのロード時に先に進める
//
window.history.forward()
//------------------------------------------------------------
//
// loadイベント発生時に先に進める
// firefoxではキャッシュからロードされた場合(たとえば
// [戻る]で表示した場合)はloadイベントは発生しない。
//
window.onload = function (){
        window.history.forward()
}
//------------------------------------------------------------
//
// pageshowイベント発生時に先に進める
// キャッシュから表示された場合も
// firefoxにおいてはpageshowイベントが
// 発生する。
//
window.onpageshow = function (evt){
        if (evt.persisted){
                window.history.forward()
        }
}
//------------------------------------------------------------
//
// onunloadイベントハンドラ登録(ダミー)。
// firefoxでキャッシュを抑止するため。
//
window.onunload = function (){void(0)}

ポイントは、Firefoxの場合、[戻る]で戻った場合、キャッシュからページが読み込まれ、loadイベントが発生しない事と、そのかわりpageshowイベントが発生する点。

実際にはunloadイベントのハンドラを登録することでキャッシュされることを抑止しなければうまく行かなかったが。