2

すべてのウェブサイトのページをメインのインデックス ページにロードし、次のように、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

など、無限に。

これはどのように解決できますか?

おそらく、ハッシュをクリアしてから新しいハッシュを表示する方法 (つまり、#/ で始まるすべてのものを削除してから、新しいハッシュを追加する) があるかもしれません – または、より良い解決策があるでしょうか?

4

3 に答える 3

3

試してみてください。var my_url = this.href.replace(/#.*/,'')
これにより、以降のすべてが削除#されます。

于 2013-06-02T14:57:29.820 に答える
2

現在の URL のパス コンポーネントだけを分割する場合は、使用しないでください。

var pathArray = this.href.split('/');

hrefハッシュを含むフルパスが含まれるためです。

使用する

var pathArray = this.pathname.split('/');

代わりは。

于 2013-06-02T15:03:04.203 に答える
1

ハッシュを変更しても、ページは更新されません。せいぜい、ブラウザが上にスクロールするように強制します。必要に応じて、次のことができます。

window.location.hash = ""; 

それを空にする(保持する#)場合#、hrefからも削除すると、ページは常にリロードされます。

于 2013-06-02T14:58:44.763 に答える