javascript-动态创建的iframe用于通过Firebug下载文件触发器onload,但并非没有
作者:互联网
编辑:由于此问题现在已“解决”到工作点,我希望获得有关原因的信息.有关修复程序,请参见下面的评论.
我有一个Web应用程序,它可以动态地(在超时后或按照用户的指示)动态地将wav文件下载到iframe中,以触发默认的音频播放器来播放它们.该应用程序仅针对FF 2或3.为了确定何时完全下载文件,我希望对iframe使用window.onload处理程序.基于this stackoverflow.com answer,我每次都创建一个新的iframe.只要使用该应用程序在浏览器中启用了萤火虫,一切都将正常运行.没有萤火虫,onload永远不会触发. firebug的版本是1.3.1,而我已经测试了Firefox 2.0.0.19和3.0.7.有什么想法可以下载wav文件时如何从iframe获取加载以可靠地触发吗?还是有另一种方式表示下载已完成?以下是相关代码:
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 + "' onl oad='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/
标签:download,wav,iframe,firebug,javascript 来源: https://codeday.me/bug/20191106/2000838.html