9

すべてのリクエストを1ページで処理する傾向のあるWebサイト(Ajax)を作成しています。そのため、すべてのユーザーのリンクをクリックをトラップして、それが自分のWebサイトにあるかどうかを確認できると思いました。たとえば、JavaScriptでajaxリクエストなどを実行すると、通常どおりリンクが開きます

window.locationでウォッチを実行しても機能しませんでした!さらに、#記号の後にあるURL部分を取得する方法があるかどうかはわかりません。注:GMailとFacebookはどちらもそうだと思います!、次のようなものを使用します:http:
//mail.google.com/mail/ #inbox
http://www.facebook.com/home.php#/ inbox / ?ref = mb

親切に考えてみてください。私はプロジェクトでjQueryを使用するのが大好きなので、jQueryを使用するソリューションが推奨されます。

何か案は?

4

5 に答える 5

4

URLのフラグメント部分は、AJAX対応のWebサイトでナビゲーション履歴(戻るボタンと進むボタン)を有効にするために使用されます。とにかくjQueryを使用しているので、リンクのクリックを「トラップ」したい場合は、次のようにすることができます。

$('a').click(function()
{
   var item = $(this);
   var url = item.attr('href');
   // your logic here
});

AJAXと組み合わせてフラグメント(window.location.hash)を使用する場合、IE6はAJAXリクエストでURLのフラグメント部分を送信するため、デバッグが非常に困難になる可能性があることに注意してください。

于 2009-11-01T15:20:44.143 に答える
4

もう1つの良い読み物は次のとおりです。従来のブラウザナビゲーションをAJAXアプリケーションに復元する

記事からの抜粋:

多くの開発者は、デスクトップアプリケーションとほぼ同じくらいインタラクティブで応答性の高いリッチWebアプリケーションを開発する方法としてAJAXを採用しています。AJAXは、WebUIをさまざまなセグメントに分割することで機能します。ユーザーは、最初の操作が終了するのを待たずに、1つのセグメントで操作を実行してから、他のセグメントで作業を開始できます。

しかし、AJAXには大きな欠点があります。これは、戻る、進む、ブックマークのサポートなど、標準のブラウザの動作を壊します。開発者は、ユーザーにAJAXの欠点に適応させるのではなく、AJAXアプリケーションを従来のWebインタラクションスタイルに準拠させる必要があります。

于 2009-11-01T15:25:09.453 に答える
4

単純:

if(window.location.hash) {
  // Fragment exists
} else {
  // Fragment doesn't exist
}

リンク: JavaScriptを使用してURLの#hashを確認するにはどうすればよいですか?

于 2009-11-01T15:17:37.283 に答える
4

hashchange最新のブラウザのウィンドウにディスパッチされたイベントがあります。

于 2009-11-01T15:41:23.120 に答える
3

@Pekkaのリンクを参照してください。JavaScriptを使用してURLの#hashを確認するにはどうすればよいですか。ハッシュを見てください。その関数をコールバックに入れるだけですwindow.setInterval()

于 2009-11-01T15:27:57.730 に答える