编辑:由于这个问题现在已经“解决”到可以工作的地步,我正在寻找有关原因的信息。有关修复,请参阅下面的我的评论。
我有一个 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 调用。