我认为这是可能的,因为有很多类似的问题(已经解决了)但似乎没有处理动态创建的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被加载的提示,因此没有被调用。任何线索?
答案 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,因此它有自己的事件层次结构等。
将其视为一个完全独立的页面。