それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

確定申告のページの戻るボタン禁止がマシだった。

確定申告ページでも戻るボタン禁止

確定申告ページは、ロード遅いし、右クリック禁止、window.Alert使いまくりだわ、クソUIの典型みたいな感じだけど

唯一評価できる戻るボタン禁止の実装

戻るを押した時に、ページをそのままにするハックが用いられていた。

ゆうちょ銀行やじぶん銀行みたいに戻るボタン押した瞬間にログインしなおしとか、ああいう腐った戻るボタン禁止より幾分マシだった。

location.hash を用いたbackspace の制御

これは、初めて見た。URLにハッシュ値を与えておいて、onhashchangeでイベントをHookする感じ。

onunload が不安定なので、こっちを選んだのだろうけど、使う側として比較的安心して使える実装でした。

//location.hashを使用したbackspace制御

// IEでのアンカー対応用変数
var bsctrlOrg ;

// onload時の実行関数
function location_setTimeOut()
{
        setTimeout('location_change()',1);
}

// location.hashの初期化関数
function location_change()
{
        // IEでのアンカー対応
        bsctrlOrg = location.hash;
        location.hash = bsctrlOrg;
        
        // location.hashの初期化
        location.hash = "#bsctrl";
}


// onhashchange時の処理の設定
window.onhashchange = function()
{
        if( location.hash != "#bsctrl" )
        {
                // IEでのアンカー対応
                if( bsctrlOrg != location.hash )
                {
                        bsctrlOrg = location.hash;
                }
                location.hash = bsctrlOrg  ;
                
                // location.hashの再初期化
                location.hash = "bsctrl"  ;
        }
};

// onload時の処理の追加
if( window.addEventListener )
{
        // IE9以降,FX,CH,SF用
        window.addEventListener( 'load', location_setTimeOut, false );
}
else if( window.attachEvent )
{
        // IE8以前用
        window.attachEvent( 'onload', location_setTimeOut );
}
else
{
        // その他
        window.onload = location_setTimeOut;
}

ページがロードされたタイミングで onload に setTimout を仕込む、setTimeout で windows loacation を hash に移動させる、hash があるので unhashchangeが使える、戻るボタン押されたら、unhashchange で強制戻し。

なかなか憎めない実装でした。

この戻るボタン禁止なら、普及してもそんなに苦にならない。

それでも、右クリック禁止は許せない。ここは90年台のインターネットですか。