If you are including iframe
elements in your HTML pages, you may want to consider displaying a simple loading indicator to let your end users know that content is being loaded within the iframe
instead of just displaying empty space.
There are many ways to accomplish this. In this tutorial, we are going to look at one of the ways to do this using vanilla JavaScript. This tutorial simply covers how to display an animated image while loading the iframe
content.
Demo
In the code below we have included the HTML, CSS, and JavaScript in the same page. Of course, in practice, we would separate the CSS into its own style sheet as well as moving the JavaScript to its own external file. In the example below, all we are doing is immediately displaying the animated GIF in the middle of the iframe
element.
Once the iframe
content completes the loads, the hideLoader()
function is executed via the onload
event on the iframe
element. The JavaScript function then simply changes the display style property for the animated GIF to none
which essentially hides the image.
<!DOCTYPE html>
<html>
<head>
<title>JavaScript Demo - IFRAME Loader</title>
<style>
#frameWrap {
position:relative;
height: 360px;
width: 640px;
border: 1px solid #777777;
background:#f0f0f0;
box-shadow:0px 0px 10px #777777;
}
#iframe1 {
height: 360px;
width: 640px;
margin:0;
padding:0;
border:0;
}
#loader1 {
position:absolute;
left:40%;
top:35%;
border-radius:20px;
padding:25px;
border:1px solid #777777;
background:#ffffff;
box-shadow:0px 0px 10px #777777;
}
</style>
<script>
function hideLoader() {
document.getElementById('loader1').style.display = "none";
}
</script>
</head>
<body>
<div id="frameWrap">
<img id="loader1" src="loading.gif" alt="loading gif" />
<iframe id="iframe1" src="targetPage.html" onload="hideLoader();"></iframe>
</div>
</body>
</html>