如何在未加载元素时注册元素onload?

时间:2009-12-27 09:27:58

标签: javascript

我了解到你可以像这样注册body onload:

window.addEventListener('load', function, capture); // or attachEvent for ie; capture is true or false

所以我试着像这样注册一个元素onload:

document.getElementById(eleid).addEventListener('load', function, capture);

但它让我错误,说“无法调用null的方法addeventlistener”或类似的东西。
我认为这是因为当注册发生时,document.getElementById(eleid)还不存在。但是我需要在元素加载之前注册它,当元素已经加载时注册onload函数是什么意思?该函数永远不会被调用
那么问题是我如何注册元素onload函数呢?

更新

感谢NSD,Pekka和pygorex1,我现在知道我不能为身体和图像以外的元素注册onload事件
所以问题是,是否有解决方法?

基本上,我想要做的是只在加载图像时才显示div。 onload适用于图像,所以没问题。但有时图像被缓存并在div之前加载,当函数试图显示div时,它无法找到它。在这种情况下,我希望div一出现就会显示出来。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

元素没有onload处理程序,仅适用于正文和图像标记(加载图像源时会触发onload,而不是DOM元素本身)。

答案 1 :(得分:1)

简短的回答是:你做错了。

当浏览器遇到onload标记时,它会在何时触发理论<div>事件?什么时候在屏幕上呈现?在DOM树中解析元素时?

如果由于某种原因你需要检测元素何时出现(也许你是通过AJAX加载HTML并将其注入DOM),你可以设置一个计时器来通过getElementById()来检查元素。然后用它做点什么。或者,更好的是,在动态加载后搜索元素。