簡體   English   中英

動態創建的iframe用於使用firebug下載文件觸發器onload但不是沒有

[英]Dynamically created iframe used to download file triggers onload with firebug but not without

編輯 :因為這個問題現在“解決”到工作的角度,我希望得到有關原因的信息。 有關此修復程序,請參閱下面的評論。

我有一個Web應用程序,它可以動態地(在超時后或用戶指示的情況下)將wav文件重復下載到iframe中,以便觸發默認音頻播放器播放它們。 應用程序僅針對FF 2或3.為了確定何時完全下載文件,我希望使用iframe的window.onload處理程序。 根據這個stackoverflow.com回答,我每次都會創建一個新的iframe。 只要使用應用程序在瀏覽器上啟用了firebug,一切都很好。 沒有螢火蟲,onload永遠不會發射。 firebug的版本是1.3.1,而我測試的是Firefox 2.0.0.19和3.0.7。 任何想法如何從iframe獲取onload以在wav文件下載時可靠地觸發? 或者是否有其他方式表明下載完成? 這是相關的代碼:

HTML(隱藏的唯一屬性是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時都會觸發onload,永遠不會沒有它。

編輯:修復了有關如何聲明iframe的信息並添加了回調函數代碼。 不,這里沒有console.log調用。

舊問題,但供將來參考:至於我的onLoad經驗不需要文件下載。 解決問題的方法是使用像他們這樣做的cookie http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser/

這是一個適用於我的示例,沒有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文件,而不是音頻文件,因此可能會有所不同。

也許你在某個地方調用一些Firebug內部函數,比如console.log()? 在這種情況下,如果Firebug不活動,Firefox將拋出異常,可以停止執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM