編輯:因爲這個問題現在「解決」的工作點,我期待有關於爲什麼的信息。有關修正,請參閱下面的評論。動態創建的iframe用於下載文件觸發器onload與螢火蟲但不是沒有
我有一個web應用程序,它可以動態地(在超時之後或按照用戶的指示)下載wav文件到iframe中,以觸發默認音頻播放器播放它們。應用程序僅針對FF 2或3.爲了確定文件何時完全下載,我希望爲iframe使用window.onload處理程序。基於this stackoverflow.com answer我每次創建一個新的iframe。只要使用該應用程序在瀏覽器上啓用了螢火蟲,一切都很好。沒有螢火蟲,onload不會開火。螢火蟲的版本是1.3.1,而我測試了Firefox 2.0.0.19和3.0.7。任何想法如何從iframe中獲取onload以便在wav文件下載時可靠地觸發?或者有另一種方式來表示完成下載?下面是相關代碼:
HTML(隱藏的唯一屬性顯示:無;):
<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");
}
我也曾嘗試創建iframe通過document.createElement,但我發現了相同的行爲。 onload每次觸發螢火蟲時都會觸發,從來沒有它。
編輯: 修復了關於如何聲明iframe並添加回調函數代碼的信息。不,沒有console.log在這裏調用。
出於某種原因,獲取iframe的contentDocument並設置onload會導致觸發HTML中的onload。我需要在HTML中添加到容器的onload和contentDocument.onload =調用。任何想法爲什麼會感激! – justkt 2010-03-17 14:11:49