3

編集:この問題は現在、機能するまで「解決」されているため、その理由に関する情報を探しています。修正については、以下の私のコメントを参照してください。

デフォルトのオーディオプレーヤーをトリガーして再生するために、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 呼び出しはありません。

4

3 に答える 3

4

古い質問ですが、将来の参考のために:私の経験では、onLoadはファイルのダウンロードには呼び出されません。これを解決する方法は、ここで行うようにCookieを使用することですhttp://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser/

于 2012-08-16T05:51:28.177 に答える
0

たぶん、console.log() のような Firebug の内部関数をどこかで呼び出しますか? その場合、Firebug がアクティブでない場合、Firefox は実行を停止できる例外をスローします。

于 2010-03-28T19:34:00.540 に答える
0

これは、Firebug を開かずに動作する例です (FF 3.6.2 Mac でテスト済み): http://www.jsfiddle.net/Kukry/

の代わりにjQuery.load()イベントを使用していonloadます。

var iframe = $("<iframe/>").load(function () {
    alert("loaded");
}).attr({
    src: "http://code.jquery.com/jquery-1.4.2.min.js"
}).appendTo($("#thediv"));

オーディオ ファイルではなく JavaScript ファイルを読み込んでいるため、違いが生じる可能性があることに注意してください。

于 2010-03-24T19:53:12.507 に答える