次のように構成された angularJS アプリがあります。
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
したがって、最新のブラウザーでは、プッシュステートで問題なく動作します。URL の例は次のようになります。
http://myapp.com/members
IE9 などの古いブラウザーでは、その URL を参照すると、期待どおりに次のように書き換えられます。
http://myapp.com/members#!/members
この時点からリンクをクリックすると、hashbang メソッドが正しく使用されます。
http://myapp.com/members#!/members/add
でも...
ハッシュバンで書き換えられた URL にあるページを完全にリロードすると、それ自体にハッシュが追加され続けます。最初の更新:
http://myapp.com/members#!/members#!/members#!%2Fmembers
.. そして 2 回目の更新:
http://myapp.com/members#!/members#!/members#!%2Fmembers#!/members#!%2Fmembers%23!%2Fmembers%23!%2Fmembers
これを引き起こしている可能性のある、ここで何が起こっているのでしょうか? 通常、人々はアプリ内をナビゲートし、angular が URL を処理するため、これは発生しませんが、完全なリロードを行うと、それが壊れるようです。ありがとう。