0

誰かが助けてくれることを願っています、これは私を怒らせています...

多数 (106!) の MP3 ファイルをプリロードする必要があるイントラネット アプリケーションに取り組んでいます。私はこれらのようにプリロードしています...

for (i=0; i<mp3Files.length; i++) {

    soundSpan = document.createElement("span")

    soundFileLocation = "http://wss/sites/TDABQ/" + mp3Files[i]

    soundSpan.innerHTML="<embed src='" + soundFileLocation + "' hidden='true' autostart='false' loop='false' />"

    document.body.appendChild(soundSpan)
}

これは機能しますが、少し時間がかかりますが、読み込みが遅いことは問題ではありません。

問題は、ページの準備ができたことをユーザーに確認できるように、すべてのファイルがいつ読み込まれたかを判断する方法がわからないことです。

問題:

  1. これは Internet Explorer 6 で動作する必要があり (そうです、本当に)、HTML5 / Audio を除外します。

  2. このアプリケーションが保存されているサーバーに何もロードできません (質問しないでください)。これまでのところ、SoundManager を除外しています。アプリケーションと同じサーバー上にある場合は SoundManager を正常に動作させることができますが、別のサーバーから SoundManager をロードしようとすると、Flash > JS (または JS > Flash) のセキュリティ設定で問題が発生します。これらの設定は、クライアント PC では変更できません。

  3. JQuery の Ajax および Get メソッドを使用してみましたが、何らかの理由でクロス ドメインの Ajax 呼び出しを行うことができません。たとえば、次のコードではアラート ボックスが表示されません。

    $(document).ready(function() {

    $.get({ url: "http://wss/sites/TDABQ/field1.mp3", crossDomain:true, success: function() { alert('yes!') } });

    });

したがって、埋め込みタグを使用して事前読み込みを行っています。Embed タグが onLoad または onReadyStateChange イベント ハンドラに応答していないようです。

アイデアが尽きた…

すべてのファイルがいつロードされたかを確認するにはどうすればよいですか???

4

2 に答える 2

0

Ty using

$("#yourEmbed").bind('load', function(){ 
  alert("Files loaded"); 
});

The ready handler wont work, as it is fired as soon as the DOM has fully loaded.

于 2012-07-27T06:22:27.513 に答える
0

(クロスドメイン AJAX の場合) JSONP 要求が許可されている唯一の要求であるため、AJAX 呼び出しが機能していません。現在の例は、JSON ではなく mp3 を要求しています。.mp3 へのパスを含む JSON ファイルを要求できますが、それでは問題は解決しません。

Sound Manager の内部動作についてはわかりません。私は Esailja のアドバイスに従い、crossdomain.xml をチェックします。

于 2012-07-26T21:30:26.910 に答える