动态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,因此它有自己的事件层次结构等。
把它想象成一个完全独立的页面。