2

リンクをクリックすると、場所全体を更新したりURLアドレスバーを変更したりせずにAページにリダイレクトされるインターネット上のアプリを見つけました。

これで私を助けてください。

4

5 に答える 5

8

履歴APIを使用すると、次のようなことができます

  if (history && history.pushState){
     history.pushState(null, null, '/new/url');
  }

Chrome js コンソールを使用してブラウザで試してみてください

必要なのはそれだけです(もう少し多いかもしれませんが、それが基本です)

http://diveintohtml5.info/history.htmlで詳細を読む

于 2013-06-18T10:43:04.890 に答える
3

HTML5 History API を使用して、ページを更新せずに URL を変更することができ
ますクロスブラウザー ソリューション用のHistory.js

jQuery PJAX プラグインhttps://github.com/defunkt/jquery-pjaxは、あなたが言及したことを行うのに役立ちます。コンテンツを更新し、更新せずに URL を変更するのに役立ちます。

以下に例を示します: http://pjax.heroku.com/
この例のソース コードは、https ://github.com/defunkt/jquery-pjax/tree/heroku から入手できます。

于 2013-06-18T10:31:32.007 に答える
2

これは通常、最新のHTML5履歴 API を使用するか、古いブラウザーの場合は URL のハッシュを変更することによって行われます。この記事をご覧ください: http://dev.opera.com/articles/view/introducing-the-html5-history-api/

ユーザー アクションによって新しいページが表示される場合、新しいページを (新しい URL で) 読み込む代わりに、ページは共通のプロパティ (たとえば、ヘッダー、フッター、または e コマース サイトのショッピング カート ウィジェットなど) を保持します。を使用し、残りのコンテンツは を介し​​て非同期にフェッチされますAjax。新しいコンテンツがフェッチされると、それに応じて UI が変更され、新しいコンテンツがstate履歴スタックにプッシュされ、それに応じて URL が変更されます。ここでディクショナリとして使用される属性を通じて、dataユーザーが前後に移動してそのページに再び到達したときに何を表示するかに関する情報を保存します。このようなもの:

history.pushState({mydata1: data, mydata2: anotherData},"newTitle",newURL);

そのため、ユーザーがブラウザの [戻る] ボタンを押すと、そのエントリが履歴スタックから取り出され、スタックの一番上にある新しいエントリのデータ属性から、新しいページが表示されます。現在のページも更新できます。

history.replaceState({mydata1: data, mydata2: anotherData}, "anotherTitle",newURL);

現在のページに関するすべての情報は、次の場所から取得できますstate

myState = history.state;

観察したことがあれば、Facebook も同じことを行います。ホームボタンをクリックするか、友達のプロフィールに移動しても、新しいページは読み込まれません。右側の通知ティッカーはそのまま残ります (新しいページ用に再度読み込まれるのではなく)。チャット ボックスが開かれている場合は、そのまま残ります。これは、ページが新しいページにリロードされず (この場合、チャットやティッカーを含むすべてのウィジェットもリロードする必要があります)、URL のみが動的に変更され、新しいコンテンツが Ajax を介して取得および表示されるためです。

API をサポートしていない でFacebookを表示すると、引き続き機能することがわかりますが、URL の変更動作は異なります。これは、ハッシュを変更して URL を変更するという古き良き方法に頼っているからです。IE8History

于 2013-06-18T11:54:37.887 に答える
0

最も簡単な解決策は、フレームまたは iframe を使用し、 のtarget属性をaフレームに設定する (またはフレーム内のリンクをクリックする) ことです。これにより、フレーム内に新しいページが表示され、ロケーション バーに frameset-html のアドレスが表示されます。

于 2013-06-18T10:30:13.167 に答える
0

一部の情報のみを印刷する必要がある場合は、ダッシュ # 記号の後に印刷しても文書はリロードされません。

于 2013-06-18T10:46:30.187 に答える