Generic onload

Version 1.1 - 1st November 2004

This script is an encapsulated onload function that doesn't interfere with other window.onload or <body onload> functions on the same page. The script works in all modern browsers (with javascript enabled).

The demo uses alert() dialogues to demonstrate the onload methods firing. If scripting (or this script) is not supported, nothing will happen.

Get the script

Download the zipfile [1K] and unzip it into your site directory, then you can either include the script on your page as it is:

<!-- Generic onload by Brothercake - http://www.brothercake.com/ -->
<script type="text/javascript" src="onload.js"></script>

or copy the code into another script, and work with it from there:

//GO1.1


///////////////////////////////////////
//
//  Generic onload by Brothercake
//  http://www.brothercake.com/
//
///////////////////////////////////////



//onload function
function generic()
{
	alert('Generic onload function');
};



//setup onload function
if(typeof window.addEventListener != 'undefined')
{
	//.. gecko, safari, konqueror and standard
	window.addEventListener('load', generic, false);
}
else if(typeof document.addEventListener != 'undefined')
{
	//.. opera 7
	document.addEventListener('load', generic, false);
}
else if(typeof window.attachEvent != 'undefined')
{
	//.. win/ie
	window.attachEvent('onload', generic);
}

//** remove this condition to degrade older browsers
else
{
	//.. mac/ie5 and anything else that gets this far
	
	//if there's an existing onload function
	if(typeof window.onload == 'function')
	{
		//store it
		var existing = onload;
		
		//add new onload handler
		window.onload = function()
		{
			//call existing onload function
			existing();
			
			//call generic onload function
			generic();
		};
	}
	else
	{
		//setup onload function
		window.onload = generic;
	}
}

There may be limitations on where this can go, depending on the level of browser support you need ...

Browser notes

Mac/IE5 doesn't support any truly encapsulated onload methods, so the script has to use window.onload. But it does this with sensitivity - if your page is already using a window or <body onload> handler, the script will copy and call that first, before the generic onload kicks in.

It can only do this if the handler has already been defined, therefore this script must come after it in the source-code, or the generic onload won't be called.

You can of course simplify your life, and just remove the final else{} condition - degrading Mac/IE5 and older browsers to unsupported. Then it won't matter where the script is, or how many of them them you use.

Get the script

Usability widgets

Website gadgets

Bits of site functionality:

Local network apps

Web-applications for your home or office network:

Components

Parts for other scripting:

Novelties

More amusing than useful:


In this area

Main areas


[brothercake] came here for something, and found something else