How to Detect if An \'IMG\' Element Load Has Started And/or a Request Has Been Made to the Server?

Sometimes when inserting images into HTML sites, the image may not load for the following reasons:

  • Incorrect image URL

  • Network connectivity issues

  • Server downtime or slow response

Detecting if an IMG element load has started and/or a request has been made to the server is crucial for handling loading states and providing better user experience. Let's explore different methods to achieve this.

HTML <img> Tag Overview

The HTML <img> tag is used to embed images in web pages. It creates a holding space for the referenced image and includes attributes for source URL, alternative text, and dimensions.

Syntax

<img src="image-url" alt="description" width="value" height="value">

Method 1: Using onload and onerror Events

The most common approach uses the onload and onerror event handlers to detect successful loading or failure:

<!DOCTYPE html>
<html>
   <head>
      <title>Detecting Image Load</title>
   </head>
   <body>
      <h3>Case 1: Valid Image URL</h3>
      <img src="https://www.tutorialspoint.com/images/logo.png"
           onload="alert('Image loaded successfully')"
           onerror="alert('Image failed to load')" />
      
      <h3>Case 2: Invalid Image URL</h3>
      <img src="invalid-url.jpg" 
           onload="alert('Image loaded successfully')"
           onerror="alert('Failed to load the image')" />
   </body>
</html>

When executed, the first image will trigger the onload event and show "Image loaded successfully". The second image will trigger the onerror event due to the invalid URL.

Method 2: Using the complete Property

The complete property returns a boolean value indicating whether the image has finished loading:

<!DOCTYPE html>
<html>
   <head>
      <title>Detecting Image Load with complete Property</title>
   </head>
   <body>
      <img id="testImage" src="https://www.tutorialspoint.com/java/images/java-mini-logo.jpg">
      
      <script>
         window.addEventListener("load", () => {
            const image = document.getElementById('testImage');
            const isLoaded = image.complete;
            alert(`Image loaded: ${isLoaded}`);
            console.log('Image complete status:', isLoaded);
         });
      </script>
   </body>
</html>

This script will display an alert showing "true" if the image has loaded completely, along with logging the status to the console.

Method 3: JavaScript Event Listeners

For more control, you can add event listeners programmatically:

<!DOCTYPE html>
<html>
   <head>
      <title>Dynamic Image Load Detection</title>
   </head>
   <body>
      <div id="imageContainer"></div>
      <button onclick="loadImage()">Load Image</button>
      
      <script>
         function loadImage() {
            const img = new Image();
            const container = document.getElementById('imageContainer');
            
            img.addEventListener('load', () => {
               console.log('Image loaded successfully');
               alert('Image request completed successfully');
               container.appendChild(img);
            });
            
            img.addEventListener('error', () => {
               console.log('Image failed to load');
               alert('Image request failed');
            });
            
            img.src = 'https://www.tutorialspoint.com/images/logo.png';
            console.log('Image request initiated');
         }
      </script>
   </body>
</html>

This approach provides real-time feedback about the image loading process and allows you to handle the response dynamically.

Key Points

  • The onload event fires when the image successfully loads

  • The onerror event fires when loading fails

  • The complete property indicates if loading has finished

  • JavaScript event listeners provide more flexibility for dynamic image handling

Conclusion

Detecting image load status is essential for creating robust web applications. Use onload/onerror events for simple detection, or implement JavaScript event listeners for more advanced control over the loading process.

Updated on: 2026-03-15T23:19:01+05:30

504 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements