Javascript Can´;t将eventlistener附加到<;img>-标签

Javascript Can´;t将eventlistener附加到<;img>-标签,javascript,html,events,Javascript,Html,Events,我想知道为什么我不能将eventlistener附加到html图像的onload事件 工作正常 但是如果我想添加一个像 document.getElementById('imageID').addEventListener('onload', function(e) { doSomething(); }); 或者使用jQuery $("imageID").on("onload", function(){ doSomething(); }); 这件事没有被抓住。如果我听一个

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

工作正常

但是如果我想添加一个像

document.getElementById('imageID').addEventListener('onload', function(e) {
     doSomething();
     });
或者使用jQuery

$("imageID").on("onload", function(){
doSomething();
});
这件事没有被抓住。如果我听一个简单的“点击”事件,它会工作,但不会和“onload”事件一起工作

有人能告诉我这种行为的原因吗?

不要在事件名称中包含
“on”

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

不要在事件名称中包含“”上的“

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


这里有两个问题

  • 在事件名称中不加“on”,如图所示

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


    这里有两个问题

  • 在事件名称中不加“on”,如图所示

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


  • 谢谢,这是一个简单有效的解决方案!我认为html标记和js中的事件是相同的,但似乎这是错误的(比如onload事件)@HartmutGrom:w3schools有很多关于它的信息,但深度和准确性有时并不出色(更多信息请参阅)。DOM的更可靠的引用是,并且通常有不错的信息,尽管有时人们提供的代码示例不是最好的质量。谢谢,这是一个简单有效的解决方案!我认为html标记和js中的事件是相同的,但似乎这是错误的(比如onload事件)@HartmutGrom:w3schools有很多关于它的信息,但深度和准确性有时并不出色(更多信息请参阅)。DOM的更可靠的引用是,并且通常有不错的信息,尽管有时人们提供的代码样本质量不是最好的。我正在通过jQuery动态地更改src属性,因此这应该是不正确的problem@HartmutGrom:只要在更改
    src
    属性之前钩住事件,就应该可以了。(但是更改
    src
    ,然后将其挂接,即使是在连续的两行代码中,也有竞争条件,即使基于浏览器的JavaScript是单线程的(因为浏览器不是单线程的)。)感谢您提到#2。我正在通过jQuery动态地更改src属性,因此这应该是不正确的problem@HartmutGrom:只要在更改
    src
    属性之前钩住事件,就应该可以了。(但是更改
    src
    ,然后将其挂接,即使是在连续的两行代码中,也会有竞争条件,即使基于浏览器的JavaScript是单线程的[因为浏览器不是]。)