我想知道为什么我不能将eventlistener附加到html图像的onload事件。
<img id="imageID" onload="doSomething();">
运行得非常完美,
但是如果我想添加一个监听器,比如
document.getElementById('imageID').addEventListener('onload', function(e) {
doSomething();
});
或使用jQuery
$("imageID").on("onload", function(){
doSomething();
});
未捕获该事件。如果我监听一个简单的“点击”-Event,它可以工作,但不能使用"onload"-Event。
有人能告诉我这种行为的原因吗?
发布于 2012-12-07 00:39:54
不要在事件名称中包含"on"
。
// no "on"------------v
document.getElementById('imageID').addEventListener('load', function(e) {
// no "on"----v
$("#imageID").on("load", function(){
// ^----need "#"
发布于 2012-12-07 00:41:54
这里有两个的问题。
如果你没有在事件名称中加上" on“,当你试图在一个已经存在于页面上的图片上挂接load事件时,你会有一个竞争条件,有时你看不到这个事件,因为它可以在被放到页面上的瞬间被”加载“(如果相关的图片在缓存中的话)。I Hate Lazy said.
src
属性之前挂钩加载,这通常意味着动态添加图像。您的DOM0处理程序( onload="doSomething()"
)可以工作,因为在将图像添加到文档时它已经附加了,但是以后在页面上查找图像的任何内容(getElementById
或jQuery)都可能会遗漏它。https://stackoverflow.com/questions/13748278
复制相似问题