2

我想知道为什么我不能将事件侦听器附加到 html 图像的 onload 事件。

<img id="imageID" onload="doSomething();">完美运行,

但是如果我想添加一个监听器

document.getElementById('imageID').addEventListener('onload', function(e) {
     doSomething();
     });

或使用 jQuery

$("imageID").on("onload", function(){
doSomething();
});

该事件没有被捕获。如果我听一个简单的“点击”事件,它可以工作,但不能与“onload”事件一起工作。

谁能告诉我这种行为的原因?

4

2 回答 2

5

不要包含"on"在事件名称中。

                              // no "on"------------v
document.getElementById('imageID').addEventListener('load', function(e) {

   // no "on"----v
$("#imageID").on("load", function(){
// ^----need "#"
于 2012-12-06T16:39:53.727 回答
0

这里有两个问题。

  1. 正如我讨厌懒惰所说,你不会在事件名称中加上“on” 。

  2. 如果您尝试在页面上已经存在的图像上挂钩加载事件,您将遇到竞争情况,有时不会看到该事件,因为它可以在它被放置的那一刻被“加载”到页面(如果相关图像在缓存中)。您必须在图像具有属性之前挂钩加载src,这通常意味着动态添加图像。您的 DOM0 处理程序 ( onload="doSomething()") 可以工作,因为当图像添加到文档时它已经附加,但是稍后在页面上查找图像的任何内容(getElementById或 jQuery)都可能会错过它。

于 2012-12-06T16:41:54.473 回答