IE supports attachEvent instead.
image.attachEvent("onload", function() {
// ...
});
With jQuery, you can just write
$(image).load(function() {
// ...
});
When it comes to events, if you have the possibility of using jQuery I would suggest using it because it will take care of browser compatibility. Your code will work on all major browser and you don't have to worry about that.
Note also that in order to the load event being fired in IE, you need to make sure the image won't be loaded from the cache, otherwise IE won't fire the load event.
To do this, you can append a dummy variable at the end of the url of your image, like this
image.setAttribute( 'src', image.getAttribute('src') + '?v=' + Math.random() );
Some known issues using the jQuery load method are
Caveats of the load event when used with images
A common challenge developers attempt to solve using the .load()
shortcut is to execute a function when an image (or collection of
images) have completely loaded. There are several known caveats with
this that should be noted. These are:
- It doesn't work consistently nor reliably cross-browser
- It doesn't fire correctly in WebKit if the image src is set to the
same src as before
- It doesn't correctly bubble up the DOM tree
- Can cease to fire for images that already live in the browser's
cache
See the jQuery docs for more info.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…