問題を説明するシナリオを次に示します。
ユーザー A はHTML5 状態をサポートするブラウザーを使用しており、次のリンクをユーザー B に送信します。
http://domain.tld/node
HTML 5 状態をサポートしないブラウザーを使用するユーザー B は、別のノードに移動し、リンクをユーザー A に送り返します。
http://domain.tld/node#!/another-node
しかし、ユーザー A がリンクをクリックすると、 の/node
代わりに のコンテンツが表示され/another-node
ます。
Asual の jQuery$.address()
プラグインにクエリを実行すると、「ハッシュバン アドレス」がハッシュ値として解釈されていることがわかります。
> $.address.value()
"/node#/another-node"
> $.address.path()
"/node"
> $.address.hash()
"/another-node"
(不思議なことに、"!" はハッシュバンから削除されます。)
このあいまいさは、実装を変更することで克服できますか?
URI に hashbang が見つかった場合、history API のサポートを無効にすることもできますが、それは避けたいと思います。