2016-07-13 9 views
0

私はシングルページアプリケーション(Angularのui-routerのようなもの)でナビゲートするためのルータを実装しています。ルーティングは、ブラウザの場所のハッシュを変更することによって行われます。ブラウザのハッシュナビゲーションを無効にする

宣言されていないルートに移動することは不可能です。したがって、#/fooルートのみを宣言し、現在は#/fooにあり、ハッシュを#/barに変更しようとすると、ブラウザはハッシュを#/fooに戻す必要があります。

しかし、その後、#/barはブラウザの履歴に残ります。問題は、ハッシュナビゲーションの履歴変更を完全に防ぐ方法です。

私は

$(window).on('hashchange', function(event) { 
    event.preventDefault(); 
    return false; 
}) 

を試みたが、それはうまくいきませんでした。

答えて

0

これは既に回答済みです。 onpopstateイベントを使用して、ユーザーが順方向/逆方向にヒットしたときを検出できますが、pushStateメソッドとreplaceStateメソッドをラップして使用時を検出する必要があります。例を以下に示します。How to detect when history.pushState and history.replaceState are used?

関連する問題