动态iframe onload没有触发?

时间:2011-09-02 15:34:23

标签: jquery

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

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

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

我的iframe创建代码:

$('<iframe class="downloadIFrame" src="'+data['url']+'"></iframe>').appendTo('body');

用于销毁它的代码(在“ready”jquery事件回调中):

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

我没有得到iframe被加载的提示,因此没有被调用。任何线索?

3 个答案:

答案 0 :(得分:2)

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

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

试试这个

$('<iframe class="downloadIFrame"></iframe>')
.appendTo('body')
.load(function(){
   $(this).remove();
}).attr("src", data['url']);

答案 1 :(得分:1)

请勿使用实时监听器。

$('<iframe class="downloadIFrame" src="http://www.google.com/"></iframe>').appendTo('body');
$('.downloadIFrame').load(function() { alert('loaded');$(this).remove(); });

在Webkit中为我工作正常。

答案 2 :(得分:0)

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

将其视为一个完全独立的页面。