2

Web ページで Windows Media Player を使用しています。バージョン 11 がインストールされているため、現在テストしているバージョンです。プレーヤーは、次の HTML を使用してページに埋め込まれます。

<OBJECT id='MS_mediaPlayer' width="400" height="45" classid='CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6' 
  codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'
  standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>
  <param name='autoStart' value="false">
  <param name='uiMode' value="invisible">
  <param name='loop' value="false">
</OBJECT>

私はJavaScriptで呼び出しています:

  MS_mediaPlayer.URL = "SomeAudioFile.mp3"
  MS_mediaPlayer.controls.play();

Fiddlerを見ると、プレーヤーが実際に "SomeAudioFile.mp3" を 2 回ダウンロードしていることがわかります。私が間違っている設定はありますか?「autoPlay」をtrueに設定し、「play()」の呼び出しを避けようとしていました。同じ結果 - 2 つのダウンロードが得られました。

更新: 最初の要求のユーザー エージェントは「Windows-Media-Player/11.0.5721.5268」です。2 つ目は「Mozilla/4.0 (互換性あり; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)". ブラウザが同じリクエストを 2 回目に実行しているようです。理由がわからない

何か案は?

更新 (4/1/10):
まだ解決策がありません。

  • JS を徹底的にデバッグしましたがMediaPlayer.URL='.....'、オーディオ ファイルを設定するための呼び出しは 1 つだけです。メディア プレーヤーがファイルをロードするようにトリガーするものは他になく、ページ上でオーディオ ファイルを参照する場所は他にありません。
  • もう 1 つの興味深い事実は、開発 Web サーバーでローカルにブラウザーを実行すると、これが発生しないことです (オーディオの二重読み込み)。ただし、同じ Web サーバーへの他のリモート リクエストでは、オーディオの読み込みが 2 回発生します。
  • 特定の IE バージョンまたはメディア プレーヤー バージョンとの相関関係を排除したと思います。これは、IE6-8 および WM9-12 で発生します。
4

1 に答える 1

1

リクエストを慎重に検討する必要があります。場合によっては、メディア プレーヤーが HTTP Range リクエストを使用しているため (ファイル全体をリクエストしていないため)、2 つのリクエストを行うことがあります。"Range" リクエスト ヘッダーを探します。また、どちらのリクエストも HEAD メソッドを使用していないことを確認してください。これは、単にサーバーの応答ヘッダーを取得するためです。

また、いずれかのセッションが Fiddler セッション リスト (「アイコンを入力しないでください。赤い円に線が引かれています」) で中止されたことが示されている場合は、クライアントがリクエストを途中で閉じたことを意味します。これは、コンポーネントがダウンロードを開始し、中止してから再開した場合に発生する可能性があります。なぜそれができるのか、私にはわかりません。

WMP を使用している他のサイトを調べて、2 つのリクエストが表示されるかどうかを確認してください。

于 2009-09-04T15:11:00.933 に答える