2011-07-28 9 views
3

ハッシュ変更またはHTML 5履歴変更をキャンセルすることができるブラウザのバックまたはフォワードイベントをキャンセルすることは可能ですかwindow.onbeforeunload経由のページローディングバックまたはフォワードイベント?ハッシュ変更またはHTML 5履歴の変更を引き起こすバックイベントまたはフォワードイベントのキャンセル

+0

イベントコールバックから 'false'を返すのはどうですか? – qwertymk

+0

@qwertymk私はそれを試みました、それはonhashchangeまたはonpopstateのために働かなかった。 –

+0

クリックハンドラに登録してみてください – qwertymk

答えて

0

あなたの状況に役立つかどうかわかりませんが、一般的なハッシュルーティングライブラリのSammy.jsにはbeforeハンドラがあります。私は以前にアクセスしたハッシュを記録するために私のアプリケーションでそれを使っていましたが、ハッシュの場合はそれらを止めたいので、falseを返すとそのページに残ります。前のページを表示するにはURLを書き直す必要がありますが、動作しているようです。あなたはかなりよく確認せずにページを残してからユーザーを保つことができるwindow.onbeforeunloadと組み合わせて使用​​

app.before(function (context) { 
    if (context.path === lastRoute) return false; // Was fired from our app.setLocation below. 
    if (lastRoute === "/#MyHashWhereIFirstWantToConfirm") { 
     if (!confirm("Are you sure you wish to leave this page?")) { 
      app.setLocation(lastRoute); // Send them back to /#MyHashWhereIFirstWantToConfirm 
      return false; // Keep the handler for the destination page from firing. 
     } 
    } 
    lastRoute = context.path; 
    return true; 
}); 

:ここで私が何をしたかの小さなサンプルです。

関連する問題