2

私は、人々が自分のページに含めることができる jQuery プラグインに取り組んでいます。プラグインは、別のドメインにある私が運用しているサービスでジョブを生成します。

ドメイン境界を破るために、ジョブを生成するために正常に機能する jQuery の JSONP 機能を使用しています。ただし、「進行状況」(0 -> 100%) も表示する必要があります。これまでのところ、私の計画は、ジョブの進行状況を継続的に「ポーリング」することでした (comet の方が優れていますが、AFAIK はクロスドメインでは不可能です)。

問題は、進行状況を毎秒ポーリングすると、Firefox がタブのタイトル内で「読み込み中...」を絶えず点滅させることです。これは非常に迷惑です。(Firefox がこれを行うのは、JSONP が DOM にアタッチされたスクリプト タグを介して機能し、DOM が「ロード」されるためです)。

したがって、私の質問の要点は次のとおりです。

「読み込み中...」タブのタイトルメッセージを抑制することは可能ですか?または、クロスドメイン方式で進行状況の更新を「ストリーミング」するより良い方法はありますか?

-- フェリックス・ガイゼンドルファー

4

3 に答える 3

0

長時間実行されるジョブの場合は、平均実行時間を取得して、ユーザーのために偽造することができます。まれなポーリングを使用して、偽造された完了率を調整します。

平均的な仕事には10分かかるとしましょう。平均して毎秒何パーセントを実行する必要があるかを把握し、その量を完全にクライアント側で偽の更新を行うことができます。

次に、30秒のタイマーが切れたら、サーバーをポーリングして実際の完了率を取得し、進行状況バーの速度を更新して、クライアント側の偽物がサーバージョブの新しい推定終了時間に終了するようにします。

平均パフォーマンスと現在測定している時間の中間点を見つけるためにいくつかの計算を行うことができますが、それはジョブを実行する時間の変動性に依存します。

于 2009-10-24T08:05:21.237 に答える
0

残念ながら、ajax呼び出しは完了すると返されるだけなので、進行状況を更新する方法はありません。

ローディングスピナーなどの使用をお勧めします。

正確な積載の進行状況を示すことが絶対的な要件である場合は、別の角度からアプローチする必要があります。

于 2009-08-13T17:09:23.487 に答える
0

最近では、 CORSのサポートがかなり普及しています。CORS を使用してクロスドメインの XMLHttpRequests を OK することで、問題を適切に解決できるようになりました。CORS サポートの欠如を検出して、古いブラウザーの JSONP にフォールバックするのは簡単です。

その最初のリンクには検出コードの例があり、それが MDCでどのように機能するかについての詳細な詳細があり、ブラウザーの互換性についての詳細が必要な場合は、数日前にウィキペディアの記事を更新しました。

その要点は次のとおりです。

  • 最新の WebKit ブラウザー (Safari 4 以降、Chrome 3 以降、新しい Flock など)
  • Gecko 1.9.1 以降 (Firefox 3.5 以降、SeaMonkey 2.0 以降など)
  • Internet Explorer 8+ およびそれに基づくもの (Sleipnir など) ...ただし、リクエストで資格情報と Cookie を渡すフラグを実装していないことに注意してください。

注目すべき例外は次のとおりです。

  • Opera (10.61 以降サポートなし)
  • Camino (2.0.5 は Gecko 1.9.0 (Firefox 3.0) に基づいています)
  • Arora (Arora 0.10.2 の時点で API はありますが、バグによりリクエストが失敗します)
于 2010-09-19T05:50:54.827 に答える