92

私はウェブアプリを開発しています。その中に、ユーザーがカテゴリの 1 つをクリックするたびに、更新パネルが適切なコンテンツをロードするカテゴリと呼ばれるセクションがあります。

ユーザーがカテゴリをクリックした後、ブラウザのアドレスバーの URL を変更したい

www.mysite.com/products 

のようなものに

www.mysite.com/products/{selectedCat} 

ページを更新せずに。
これを実現するために使用できる JavaScript API はありますか?

4

6 に答える 6

158

HTML5を使用すると、リロードせずにURLを変更できます。

ブラウザの履歴に新しい投稿を作成したい場合(つまり、戻るボタンが機能します)

window.history.pushState('Object', 'Title', '/new-url');

戻ることができずにURLを変更したいだけの場合

window.history.replaceState('Object', 'Title', '/another-new-url');

オブジェクトはajaxナビゲーションに使用できます。

window.history.pushState({ id: 35 }, 'Viewing item #35', '/item/35');

window.onpopstate = function (e) {
  var id = e.state.id;
  load_item(id);
};

詳細はこちら:http ://www.w3.org/TR/html5-author/history.html

フォールバックソリューション:https ://github.com/browserstate/history.js

于 2010-10-30T17:33:00.750 に答える
31

みんながすでに言ったことに追加するには、window.location.hash プロパティを編集して、onclick 関数で必要な URL に一致させます。

window.location.hash = 'category-name'; // address bar would become http://example.com/#category-name
于 2008-12-09T10:58:59.157 に答える
7

アドレスバーを完全に別の URL に移動せずにその URL に直接操作することは、セキュリティ上の理由から許可されていないと思います。

www.mysite.com/products/#{selectedCat}

つまり、同じページ内のアンカー スタイル リンクで、現在ほとんどの JavaScript ライブラリに存在するさまざまな履歴/「戻るボタン」スクリプトを調べます。

更新パネルについて言及すると、asp.net を使用していると推測されます。その場合、asp.net ajax ヒストリー コントロールは開始するのに適した場所です。

于 2008-12-09T10:43:34.897 に答える
3

アドレスバーの直感的ではない誤用であり、フィッシング攻撃を促進する可能性があるため、これは可能ではないと思います (少なくともまったく別のアドレスに変更すること)。

于 2008-12-09T10:40:54.310 に答える
-1

「window.location.hash」

sanchothefatによって示唆されているように、それを行う唯一の方法でなければなりません。私がこの機能を見たすべての場所のため、それは常にURLの#の後にあります。

于 2008-12-23T03:16:04.463 に答える
-1

これはあなたが言っているようにはできません。somej.net によって提案された方法は、取得できる最も近い方法です。これは、実際には AJAX 時代では非常に一般的な方法です。Gmail もこれを使用しています。

于 2008-12-09T10:51:21.293 に答える