0

GET または POST (Ajax および非 Ajax) を実行/呼び出すサイトの任意の場所にあるリンク/ボタンをクリックするたびに、数秒以上かかる場合は、読み込み中の gif を表示したいと思います。これを個別に行う方法は知っていますが、これを自動的に実行し、終了時にgifを非表示にする機能を作成できるかどうかを知りたいです(新しいページにリダイレクトしないと仮定します)。

これを見つけましが、これはたとえば春のセキュリティの投稿方法では機能しません。

それが不可能な場合や、必要以上の労力が必要な場合があります。それが可能かどうか、可能であればどのようにアプローチできるかを知りたいだけです。

唯一の制約は、post または get を呼び出すメソッドは、いわゆる「リスナー」を認識する必要がないことです。

4

1 に答える 1

3

これはjQueryとタグ付けされているので、簡単にするためにjQueryの回答を提供しています。これは、それがなくても比較的簡単な方法で解決できます。

すべてのリクエストへのフック:

メソッドが呼び出されたとしましょうmyMethod

GET/POSTリクエストは次の方法でトリガーされます。

  • フォームが送信されます。この場合、フォームを選択できます$("#formID").submit(myMethod);myMethodfalse を返すと、フォームが送信されないことに注意してください
  • AJAXその場合、あなたは$.ajaxStart 一緒に使うことができます$.ajaxStart(myMethod)
  • 「a」タグのクリック、およびその他のクリック ハンドラー。この場合は を実行できます。これにより、属性を持つすべてのタグが$("a[href]").click(myMethod)選択されることに注意してください。必要に応じてセレクターを変更することをお勧めします。ahref
  • Imageこの質問で説明されているように処理できる負荷。
  • Scriptこの質問で説明されているように、検出できる負荷。
  • Stylesheet/Linkこのブログ投稿で説明されています。CSS に非表示の要素を追加して、スタイルがインターバル内に適用されたかどうか、いつ呼び出されたかを確認できます。myMethod

できないこと:

  • ページに Flash のようなプラグインがある場合、または一般的に JavaScript がアクセスできないものがある場合、それが行うリクエストをフックすることはできません。

「読み込み中」の gif を表示する場合。

あなたが求めていることから、画像リクエストとAJAXリクエストのみを気にしているようです(間違っている場合は修正してください).AJAXリクエストではロードに時間がかかる外部ページはそれを実装できる(すべきです).gif新しいページのロジック。これは、上で説明したように処理できます。

すべてのケースをフックできますが、私はそうしません。「読み込み中」の gif を場所に読み込み、URL を受け入れるメソッドを作成します。そのURLが画像の場合(たとえば、マッピングで問題ない場合はファイル拡張子によるもの)、image load detect リンクされた質問のロジックを使用し、AJAXの場合は読み込み中のgifをデータが読み込まれる場所に読み込み、それを次のデータに置き換えます.done()ハンドラー。

画像に対してこれを行う方法についての質問があります。AJAX に対して行う方法は次のとおりです。この 2 つは簡単に に組み合わせることができ、methodこれを使用する必要があると私は信じています。

于 2013-03-29T11:26:47.130 に答える