Reputation: 1863
This is a crossbrowser window.onload script, I want to add a message, when the page loads (<div id="message">Loading, please wait</div>
), and it must disappear when page finished loading. How can I do that? Please help.
function init() {
if (arguments.callee.done) return;
arguments.callee.done = true;
};
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=\"__ie_onload\" defer=\"defer\" src=\"javascript:void(0)\"><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
init();
}
};
/*@end @*/
if (/WebKit/i.test(navigator.userAgent)) {
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
clearInterval(_timer);
init();
}
}, 10);
}
window.onload = init;
Upvotes: 0
Views: 1253
Reputation: 45721
The easiest way is to have a div in the DOM that you hide on the load event:
<html>
<body>
<div id="loading">The page is loading, please wait</div>
[...]
<script>
window.onload = function () {
document.getElementById('loading').style.display = "none";
}
</script>
</body>
</html>
To ensure that this always works, even when the user has JavaScript disabled:
<html>
<body>
<script>
document.write('<div id="loading">The page is loading, please wait</div>');
</script>
[...]
<script>
window.onload = function () {
document.getElementById('loading').style.display = "none";
}
</script>
</body>
</html>
Upvotes: 2
Reputation: 17794
Just load the page with the loading DIV visible from the beginning. Hide it at the end of the init function...?
Upvotes: 2
Reputation: 140205
The event you are catching is the one triggered when the DOM has finished loading, the next step in the loading is the body.onload (when all the images and body scripts are loaded).
init(); // show the div
window.onload = function(){
// finished loading, hide the div
}
Upvotes: 1