Detect when image has loaded in img tag

后端 未结 2 601
失恋的感觉
失恋的感觉 2020-12-02 14:25

I am using Angular 2 and I need to detect if an image has loaded in an image tag.

Is there an event for that?

Something like this :

<         


        
相关标签:
2条回答
  • 2020-12-02 14:34
    <img [src]="imagesource" (load)="dosomething()">
    
    0 讨论(0)
  • 2020-12-02 14:46

    Extending the first answer to examine the image that just loaded.

        <img [src]="imagesource" (load)="onImageLoad($event)">
    
          onImageLoad(evt) {
            if (evt && evt.target) {
              const width = evt.target.naturalWidth;
              const height = evt.target.naturalHeight;
              const portrait = height > width ? true : false;
              console.log(width, height, 'portrait: ', portrait);
            }
          }
    

    However, I saw that chrome sends the event twice, with different sizes! I was able to detect the correct size from the event where evt.scrElement.x and y was zero. But this might not always be the case and I'm not sure why there are two events?

        onImageLoad(evt) {
            if (evt && evt.target) {
              const x = evt.srcElement.x;
              const y = evt.srcElement.y;
              if ((x === 0 ) && (y === 0)) {
                const width = evt.srcElement.width;
                const height = evt.srcElement.height;
                portrait = height > width ? true : false;
                console.log('Loaded: ', width, height, 'portrait: ', portrait);
              }
            }
         }
    
    0 讨论(0)
提交回复
热议问题