2016-10-31 2 views
1

私はユーザーにファイルをダウンロードさせるために私のページにダウンロードボタンがあります。 ユーザーがボタンを押している場合、ページには、タブで見ることができますロードを開始します。読み込み中のアイコンが現在タブに表示されていることを確認してください

load

私は状態を取得できますか?

私はこのようなstateを取得しようとしました:

console.log(document.readyState); 

しかし、私はいつもcompleteを取得します。 私は、ユーザーがボタンをクリックする前に、それは状態を示していると考えているので、私も、最初の1秒を待つことを試みた:

setTimeout(function(){ 
    console.log(document.readyState); 
    },1000 
); 

しかし、私はまだどのタブの読み込みアイコンが常にあるにもかかわらずcomplete取得約15秒間続きます。

状態を確認するにはどうすればよいですか?

+0

すでに読み込まれているドキュメントのステータスを確認する必要はありません。ユーザーがダウンロードボタンをクリックすると、新しいリクエストが行われます。そのリクエストのステータスを確認する必要があります。プロミスやコールバックのようなテクニックが役に立つかもしれません。詳細については、あなたが持っているコードを共有してください。 –

+0

私はファイルをダウンロードできるようにサーバーのヘッダーを設定しているので、プロミスまたはコールバック関数を使用することはできません。また、ヘッダーを設定すると、クライアントに応答を返すことはできません。 参照:http://stackoverflow.com/questions/40340146/reload-page-after-download-was-initiated – Black

答えて

1

スピナー停止の規則はブラウザによって異なりますが、基本的な説明は「ページが読み込まれている間」と表示されます。しかし、これには画像、JavaScript、さらにはajax呼び出し/画像やiFramesなどがロードの一部として要求されます。

document.readyStateは、基本HTMLのみに関連しています。これは、通常、他のすべての読み込みを開始するためのトリガーです。 jQuery $().ready(function() {})のコンストラクトを使用して、スピナーの回転を維持することができます。

$(window).load(...)のイベントをより多く発生させる可能性があります。このイベントは、コンテンツが読み込まれたときに、スピナーの説明の近くに配置されています。詳細は です。これは完璧なマッチではありません。それ以降のAJAX呼び出しやiFrameリロードでは、「ロード」イベントが発生した後もスピナーが再び動き出す可能性がありますが、画像やJSが必要なイベントのトリガーとしてよく使用されます読み込まれました。ページの内容を知っていれば

あるいは、あなたはその負荷すべての画像/ JS/AJAXオフイベントを発生し、ロードされた回数をカウントする(またはロードに失敗しました)あなたが期待している番号と一致することができます。しかしそれはフックを組み込むためのもう少しの作業です。

関連する問題