动态iframe onload没有触发?

我认为这是可能的,因为有大量类似的问题(已经解决)但似乎没有处理动态创建的iframe。

基本上我使用jquery创建一个临时iframe来加载文件(从通过ajax调用提供的文件路径)然后打开文件下载提示。

一切正常但是为了防止我的DOM被一堆iframe填充,我希望在下载文件后删除iframe。

我的iframe创建代码:

$('').appendTo('body'); 

和破坏它的代码(在“准备好”的jquery事件回调中):

 $('.downloadIFrame').live('load', function() { alert('loaded');$(this).remove(); }); 

我没有收到iframe被加载的警报,所以它没有被调用。 任何线索?

live适用于事件冒泡机制,其中iframe load事件不是用户操作触发的。 因此,您无法使用live来处理iframe加载事件。

在设置iframe的src之前,您应该附加iframe load事件处理程序。 这是为了避免在附加load事件之前加载iframe的情况。

试试这个

 $('') .appendTo('body') .load(function(){ $(this).remove(); }).attr("src", data['url']); 

不要使用实时监听器。

 $('').appendTo('body'); $('.downloadIFrame').load(function() { alert('loaded');$(this).remove(); }); 

在Webkit中对我来说很好用。

我会尝试将警报代码放在您创建的iframe的dom中 – 它有自己的dom,因此它有自己的事件层次结构等。

把它想象成一个完全独立的页面。