How to check whether the background image is loaded or not using JavaScript?

In web development, checking whether a background image has loaded is crucial for ensuring proper page display and user experience. JavaScript provides several methods to detect when images finish loading, allowing developers to take appropriate actions or display fallback content.

When dealing with background images, we can use the Image object in JavaScript to monitor loading status. This approach works by creating an image element programmatically and listening for load events, even when the image is used as a CSS background.

Methods to Check Image Loading Status

  • Using the onload event handler

  • Using the addEventListener() method

Both methods rely on the load event, which fires automatically when an image finishes loading successfully. We can attach functions to this event to execute specific code once the image is ready.

Using onload Event Handler

The onload event handler is the traditional approach to detect when an element has finished loading. When applied to images, it triggers once the image data has been completely downloaded and is ready for display.

Syntax

imageElement.onload = function() {
    // Code to execute when image loads
};

Example

This example demonstrates checking if a background image loads using the onload event. We create an image element, set its source, and define what happens when it loads:

<html>
<head>
   <style>
      #backgroundDiv {
         width: 400px;
         height: 200px;
         background-image: url('https://www.tutorialspoint.com/images/logo.png');
         background-size: cover;
         background-position: center;
         border: 2px solid #ccc;
      }
      #status {
         padding: 10px;
         background: #f0f0f0;
         margin: 10px 0;
         font-weight: bold;
      }
   </style>
</head>
<body>
   <h3>Checking Background Image Load Status with onload</h3>
   
   <div id="status">Background Image Status: Loading...</div>
   <div id="backgroundDiv"></div>
   
   <script>
      const statusDiv = document.getElementById('status');
      const bgImage = new Image();
      
      bgImage.onload = function() {
         statusDiv.textContent = 'Background Image Status: Loaded Successfully!';
         statusDiv.style.background = '#d4edda';
         statusDiv.style.color = '#155724';
      };
      
      bgImage.onerror = function() {
         statusDiv.textContent = 'Background Image Status: Failed to Load!';
         statusDiv.style.background = '#f8d7da';
         statusDiv.style.color = '#721c24';
      };
      
      bgImage.src = 'https://www.tutorialspoint.com/images/logo.png';
   </script>
</body>
</html>

Using addEventListener() Method

The addEventListener() method provides a more flexible approach to handle events. It allows multiple event listeners for the same event and offers better control over event handling.

Syntax

imageElement.addEventListener('load', function() {
    // Code to execute when image loads
});

Example

This example uses addEventListener() to monitor multiple background images and track their loading progress:

<html>
<head>
   <style>
      .image-container {
         width: 300px;
         height: 150px;
         border: 2px solid #ddd;
         margin: 10px;
         background-size: cover;
         background-position: center;
         display: inline-block;
      }
      .status-panel {
         padding: 15px;
         background: #f8f9fa;
         border: 1px solid #dee2e6;
         margin: 10px 0;
      }
      .loaded { border-color: #28a745; }
      .error { border-color: #dc3545; }
   </style>
</head>
<body>
   <h3>Multiple Background Image Load Tracking</h3>
   
   <div class="status-panel">
      <div id="loadCount">Images loaded: 0/2</div>
      <div id="statusList"></div>
   </div>
   
   <div id="image1" class="image-container"></div>
   <div id="image2" class="image-container"></div>
   
   <script>
      let loadedCount = 0;
      const totalImages = 2;
      const images = [
         { id: 'image1', url: 'https://www.tutorialspoint.com/images/logo.png' },
         { id: 'image2', url: 'https://www.tutorialspoint.com/javascript/images/javascript.jpg' }
      ];
      
      function updateStatus(imageId, status) {
         const statusList = document.getElementById('statusList');
         const loadCount = document.getElementById('loadCount');
         
         statusList.innerHTML += `<div>${imageId}: ${status}</div>`;
         
         if (status === 'Loaded') {
            loadedCount++;
            document.getElementById(imageId).classList.add('loaded');
         } else {
            document.getElementById(imageId).classList.add('error');
         }
         
         loadCount.textContent = `Images loaded: ${loadedCount}/${totalImages}`;
      }
      
      images.forEach(imageData => {
         const img = new Image();
         const container = document.getElementById(imageData.id);
         
         img.addEventListener('load', function() {
            container.style.backgroundImage = `url('${imageData.url}')`;
            updateStatus(imageData.id, 'Loaded');
         });
         
         img.addEventListener('error', function() {
            updateStatus(imageData.id, 'Failed to load');
         });
         
         img.src = imageData.url;
      });
   </script>
</body>
</html>

Comparison of Methods

Method Flexibility Multiple Listeners Error Handling
onload Basic No Requires separate onerror
addEventListener() High Yes Easy to add multiple event types

Best Practices

When checking background image loading status:

  • Always include error handling with onerror or error event listeners

  • Use addEventListener() for complex applications requiring multiple listeners

  • Consider implementing loading indicators for better user experience

  • Test with different image formats and sizes

Conclusion

JavaScript provides robust methods to check background image loading status using both onload and addEventListener(). The addEventListener() method offers more flexibility for complex scenarios, while onload works well for simple implementations.

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

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements