blob: 7da6bf7b34154cca022c7d99665b8acdf2fc95d9 [file] [log] [blame]
// Setup code which waits for the body to be loaded and then calls the
// callback function
function setupWaitForBodyLoad(callback) {
// Provides the isBodyLoaded() function
__IS_BODY_LOADED__
var bodyDone = false;
if (isBodyLoaded()) {
bodyDone = true;
callback();
}
// If the page is not already loaded, setup some listeners and timers to
// detect when it is done.
var onBodyDoneTimerId;
function onBodyDone() {
if (!bodyDone) {
bodyDone = true;
callback();
if ($doc.removeEventListener) {
$doc.removeEventListener("DOMContentLoaded", onBodyDone, false);
}
if (onBodyDoneTimerId) {
clearInterval(onBodyDoneTimerId);
}
}
}
// For everyone that supports DOMContentLoaded.
if ($doc.addEventListener) {
$doc.addEventListener("DOMContentLoaded", function() {
onBodyDone();
}, false);
}
// Fallback. If onBodyDone() gets fired twice, it's not a big deal.
var onBodyDoneTimerId = setInterval(function() {
if (isBodyLoaded()) {
onBodyDone();
}
}, 50);
}