これはjQueryとタグ付けされているので、簡単にするためにjQueryの回答を提供しています。これは、それがなくても比較的簡単な方法で解決できます。
すべてのリクエストへのフック:
メソッドが呼び出されたとしましょうmyMethod
。
GET/POST
リクエストは次の方法でトリガーされます。
- フォームが送信されます。この場合、フォームを選択できます
$("#formID").submit(myMethod);
。myMethod
false を返すと、フォームが送信されないことに注意してください
AJAX
その場合、あなたは$.ajaxStart
一緒に使うことができます$.ajaxStart(myMethod)
- 「a」タグのクリック、およびその他のクリック ハンドラー。この場合は を実行できます。これにより、属性を持つすべてのタグが
$("a[href]").click(myMethod)
選択されることに注意してください。必要に応じてセレクターを変更することをお勧めします。a
href
Image
この質問で説明されているように処理できる負荷。
Script
この質問で説明されているように、検出できる負荷。
Stylesheet/Link
このブログ投稿で説明されています。CSS に非表示の要素を追加して、スタイルがインターバル内に適用されたかどうか、いつ呼び出されたかを確認できます。myMethod
できないこと:
- ページに Flash のようなプラグインがある場合、または一般的に JavaScript がアクセスできないものがある場合、それが行うリクエストをフックすることはできません。
「読み込み中」の gif を表示する場合。
あなたが求めていることから、画像リクエストとAJAXリクエストのみを気にしているようです(間違っている場合は修正してください).AJAXリクエストではロードに時間がかかる外部ページはそれを実装できる(すべきです).gif
新しいページのロジック。これは、上で説明したように処理できます。
すべてのケースをフックできますが、私はそうしません。「読み込み中」の gif を場所に読み込み、URL を受け入れるメソッドを作成します。そのURLが画像の場合(たとえば、マッピングで問題ない場合はファイル拡張子によるもの)、image load detect
リンクされた質問のロジックを使用し、AJAXの場合は読み込み中のgifをデータが読み込まれる場所に読み込み、それを次のデータに置き換えます.done()
ハンドラー。
画像に対してこれを行う方法についての質問があります。AJAX に対して行う方法は次のとおりです。この 2 つは簡単に に組み合わせることができ、method
これを使用する必要があると私は信じています。