すべてのウェブサイトのページをメインのインデックス ページにロードし、次のように、href をセグメントに分割し、.hash 関数を使用してメイン ドメイン名の後にセグメントを追加することで、URL 表示を更新しています。
$('a').click(function(event) {
event.preventDefault();
var my_url = this.href;
var pathArray = this.href.split('/');
var newPathname = "";
for ( i = 3; i < pathArray.length; i++ ) {
newPathname += "/";
newPathname += pathArray[i];
}
$('body').load(my_url);
window.location.hash = newPathname;
これで問題なく動作しますが、ちょっとした問題に直面しています。ユーザーがhttp://www.mywebsite.com/にアクセスしてから、たとえば [About] リンクをクリックすると、選択したページが読み込まれ、アドレス バーに次のように表示されます。
http://www.mywebsite.com/#/about
しかし、ユーザーが別のページで開始した場合:
http://www.mywebsite.com/#/about
クリック後、URL は次のようになります。
http://www.mywebsite.com/#/about/#/about
など、無限に。
これはどのように解決できますか?
おそらく、ハッシュをクリアしてから新しいハッシュを表示する方法 (つまり、#/ で始まるすべてのものを削除してから、新しいハッシュを追加する) があるかもしれません – または、より良い解決策があるでしょうか?