我一直在尝试向页面添加隐藏的iframe元素,并且想要在它们加载完成后操作这些元素的DOM。我注意到,我不能在将iframe添加到页面后立即开始操作DOM,因为它还没有加载完成。这不能通过DOMContentLoaded
事件来完成,因为该事件针对的是文档,而在将iframe添加到页面之前,文档并不存在于其内部,所以我们必须使用load
事件。
以下是一些测试代码:
var iframe = document.createElement('iframe');
iframe.onload = function() { console.log('loaded!'); };
document.getElementsByTagName('body')[0].appendChild(iframe);
这段代码按预期工作,但是当我将它更改为addEventListener
时,它甚至没有被添加到DOM中:
var iframe = document.createElement('iframe');
iframe.addEventListener('load', function() { console.log('loaded!'); });
document.getElementsByTagName('body')[0].appendChild(iframe);
我没有在IE中测试过attachEvent
。
有人能解释一下吗?