javascript, image onload() doesnt fire in webkit if loading same image

前端 未结 3 997
遥遥无期
遥遥无期 2020-12-08 22:02

I have an element and I\'m changing its src attribute. The element has an onload handler function attached. Each time i ch

相关标签:
3条回答
  • 2020-12-08 22:47

    To add to Matt Ball's answer, consider img.onload instead of img.addEventListener().

    var photo = document.getElementById('image_id');
    var img = new Image();
    img.onload = myFunction;
    img.src = 'http://newimgsource.jpg';
    photo.src = img.src;
    

    img.onload is easier to read and works better across user agents.

    0 讨论(0)
  • 2020-12-08 22:52

    I think your problem here is just that you are assigning the onload event after you change the src value, so once the image has already been loaded to the cache, the browser load's it before the assignment of the event. Means that instead of doing this:

    myImageObject.src = "something.png";
    myImageObject.onload = myCallback;
    

    do this:

    myImageObject.onload = myCallback;
    myImageObject.src = "something.png";
    
    0 讨论(0)
  • 2020-12-08 23:07

    This is a known bug. Here's the workaround from that link:

    This is not a bug. WebKit is just more strict. You must instantiate a new Image() object before the replacement, like this:

    var photo = document.getElementById('image_id');
    var img = new Image();
    img.addEventListener('load', myFunction, false);
    img.src = 'http://newimgsource.jpg';
    photo.src = img.src;
    
    0 讨论(0)
提交回复
热议问题