編集:この問題は現在、機能するまで「解決」されているため、その理由に関する情報を探しています。修正については、以下の私のコメントを参照してください。
デフォルトのオーディオプレーヤーをトリガーして再生するために、wavファイルを動的に(タイムアウト後またはユーザーの指示に従って)iframeに繰り返しダウンロードするWebアプリケーションがあります。アプリケーションは FF 2 または 3 のみを対象としています。ファイルがいつ完全にダウンロードされたかを判断するために、iframe に window.onload ハンドラーを使用したいと考えています。このstackoverflow.comの回答に基づく毎回新しい iframe を作成しています。アプリケーションを使用しているブラウザーで firebug が有効になっている限り、すべてがうまく機能します。firebug がなければ、onload は起動しません。firebug のバージョンは 1.3.1 ですが、Firefox 2.0.0.19 と 3.0.7 をテストしました。wavファイルがダウンロードされたときにiframeからオンロードを確実にトリガーする方法はありますか? または、ダウンロードの完了を通知する別の方法はありますか? 関連するコードは次のとおりです。
HTML (hidden の唯一の属性は display:none;):
<div id="audioContainer" class="hidden">
</div>
JavaScript (jQuery を使用することもできますが、innerHTML は、私が読んだものから html() よりも高速です):
waitingForFile = true; // (declared at the beginning of closure)
$("#loading").removeClass("hidden");
var content = "<iframe id='audioPlayer' name='audioPlayer' src='" +
/path/to/file.wav + "' onload='notifyLoaded()'></iframe>";
document.getElementById("audioContainer").innerHTML = content;
そして、notifyLoaded の内容:
function notifyLoaded() {
waitingForFile = false; // (declared at beginning of the closure)
$("#loading").addClass("hidden");
}
また、document.createElement を使用して iframe を作成しようとしましたが、同じ動作が見つかりました。オンロードは、firebug が有効になっているたびにトリガーされ、それなしではトリガーされませんでした。
編集: iframe の宣言方法に関する情報を修正し、コールバック関数のコードを追加しました。いいえ、console.log 呼び出しはありません。