Brettb.Com
  HOME | ABOUT ME | BIOTECHNOLOGY | ARTICLES | GALLERY | CONTACT
Search: Go
TECHNICAL ARTICLES
 ASP
 ASP.NET
 JavaScript
 Transact SQL
 Other Articles
 Software Reviews

PHOTO GALLERIES
 Canon EOS 300D Samples
 Akihabara Maids!
 More Galleries...

TRAVEL LOG
 2009: China
 2008: Tokyo
 2007: Tokyo
 2006: Hong Kong
 2005: New York City

MORE STUFF
 Search Engine Optimisation
 Build an ASP Search Engine
 My Tropical Fishtank
 Autoglass
 SQL Month Name
 SQL Get Date Today
 SQL Year Month
 Other New Stuff...

POPULAR STUFF
 Regular Expressions
 Index Server & ASP
 JavaScript Ad Rotator

Home > Articles

A JavaScript Banner Ad Rotator Script

This script was written to address some of the shortcomings of some other methods for creating rotating banner advertisements "Banner Ads", namely:

  • The Banner Ad Manager that comes with Microsoft FrontPage uses Java to create a banner that changes on the page. This has the problem that it takes a few seconds for the Java Applet to load, and each image in the sequence cannot point to a different URL.

  • The Ad Rotator Active Server Component of Microsoft's Internet Information Server can insert a random image on a page, with each image pointing to an appropriate URL. But each Ad can only display a single image each time the page is loaded.

The script described here addresses both problems. It displays a different image after a specific amount of time, and clicking on each of the images in the sequence will take you to a different URL. An example banner can be viewed below:

Banner Advertisement

Adding the script to a page

There are several requirements for this script:

You need several, identically sized images. The images can be in any format supported by browsers (i.e. GIF, PNG or JPEG). The example described in this article uses four different images, each of which is 468 pixels wide and 60 pixels high.

You need to add some extra code to your HTML document. For the script to work there must be an initial image on the web page. In this case the image has a filename of bb-amazon-ad1.gif. This image will also be visible when the page is viewed in browsers that do not support the script. After loading the image, its width and height should be specified, and it should also be given the name attribute of "bannerad". The image should be hyperlinked so that the ChangePage JavaScript function is executed when the image is clicked on. Example code for including the initial image is shown below:

<a href="javascript:ChangePage()"><img src="images/AmazonAd1_anim.gif" alt="Banner Advertisement" border="0" hspace="0" name="bannerad" WIDTH="466" HEIGHT="58"></a>

You also need to modify the <BODY> HTML tag of the page so that when the page is loaded, it executes the InitialiseBannerAdRotator function. Do this by adding the onload tag, as shown below:

<body onload="InitialiseBannerAdRotator()">

Finally, you need to add the following script to the page (within the <HEAD> part of the page is the ideal location):

<script language="javascript"><!--
//JavaScript Banner Ad Rotator version 2.1 - last modified 16 November 2000
//Obtained from http://www.brettb.com/js_banner_ad_rotator.asp

//User defined variables - change these variables to alter the behaviour of the script
var ImageFolder = "images"; //Folder name containing the images
var ImageFileNames = new Array('
AmazonAd1_anim.gif', 'ASPDocumentationToolBannerAd3.gif', 'AmazonAd2_anim.gif', 'WinnershTriangleWebSolutions_BannerAd.gif'); //List of images to use
var ImageURLs = new Array('
http://www.amazon.com/exec/obidos/redirect?tag=brettbcom&path=subst/home/home.html', 'http://winnershtriangle.com/w/Products.ASPDocumentationTool.asp', 'http://www.amazon.com/exec/obidos/redirect?tag=brettbcom&path=subst/home/home.html', 'http://www.winnershtriangle.com/w/'); //List of hyperlinks associated with the list of images
var DefaultURL = 'http://www.amazon.com/exec/obidos/redirect?tag=brettbcom&path=subst/home/home.html'; //Default hyperlink for the Banner Ad
var DisplayInterval = 5;
//Number of seconds to wait before the next image is displayed
var TargetFrame = ""; //Name of the frame to open the hyperlink into

//Internal variables (do not change these unless you know what you are doing)
var IsValidBrowser = false;
var BannerAdCode = 0;
var BannerAdImages = new Array(NumberOfImages);
var DisplayInterval = DisplayInterval * 1000;
var NumberOfImages = ImageFileNames.length;

//Add a trailing forward slash to the ImageFolder variable if it does not already have one
if (ImageFolder.substr(ImageFolder.length - 1, ImageFolder.length) != "/" && ImageFolder != "") { ImageFolder += "/";
}

if (TargetFrame == '') {
var FramesObject = null;
} else {
var FramesObject = eval('parent.' + TargetFrame);
}

//Function runs when this page has been loaded and does the following:
//1. Determine the browser name and version  (since the script will only work on Netscape 3+ and Internet Explorer 4+).
//2. Start the timer object that will periodically change the image displayed by the Banner Ad.
//3. Preload the images used by the Banner Ad rotator script

function InitialiseBannerAdRotator() {

//Determine the browser name and version
//The script will only work on Netscape 3+ and Internet Explorer 4+

var BrowserType = navigator.appName;
var BrowserVersion = parseInt(navigator.appVersion);

if (BrowserType == "
Netscape" && (BrowserVersion >= 3)) {
IsValidBrowser = true;
}

if (BrowserType == "
Microsoft Internet Explorer" && (BrowserVersion >= 4)) {
IsValidBrowser = true;
}

if (IsValidBrowser) {
TimerObject = setTimeout("
ChangeImage()", DisplayInterval);
BannerAdCode = 0;

for (i = 0; i < NumberOfImages; i++) {
BannerAdImages[i] = new Image();
BannerAdImages[i].src = ' ' + ImageFolder + ImageFileNames[i];
}

}

}

//Function to change the src of the Banner Ad image
function ChangeImage() {

if (IsValidBrowser) {
BannerAdCode = BannerAdCode + 1;

if (BannerAdCode == NumberOfImages) {
BannerAdCode = 0;
}

window.document.bannerad.src = BannerAdImages[BannerAdCode].src;
TimerObject = setTimeout("
ChangeImage()", DisplayInterval);
}
}

//Function to redirect the browser window/frame to a new location,
//depending on which image is currently being displayed by the Banner Ad.
//If Banner Ad is being displayed on an old browser then the DefaultURL is displayed

function ChangePage() {

if (IsValidBrowser) {

if (TargetFrame != '' && (FramesObject)) {
FramesObject.location.href = ImageURLs[BannerAdCode];
} else {
document.location = ImageURLs[BannerAdCode];
}

} else if (!IsValidBrowser) {
document.location = DefaultURL;
}

}
// --></script>

A link at the bottom of this article will allow you to download a ZIP file containing the script and example images.

Script Parameters

The script has a number of parameters in the section headed "User defined variables", which you will need to change in order to customise the script. The parameters are described below:

  • ImageFolder - the name of the folder containing the images. Leave as "" if the images are in the same folder as the document containing the banner ad rotator JavaScript.

  • ImageFileNames - this should be a list of images to use with the script.

  • ImageURLs - this should be a list of URLs to associate with the list of images. Needless to say, the number of items in this list should be the same as the number of images.

  • DefaultURL - the default URL the banner ad rotator should link to. This hyperlink is the one browsers are redirected to if the banner ad image is clicked on with a browser that is not fully supported by the script.

  • DisplayInterval - the time interval (in seconds) before the next image is displayed.

  • TargetFrame - the name of the frame in which to open the URL in. Leave as "" if the banner ad should open the URL in the same frame as the page containing the script.

How the Script Works

When the web page is first loaded into the web browser, it runs the function InitialiseBannerAdRotator. The first part of this function determines the name and version of the browser the script is being run on, setting the variable IsValidBrowser to true if the browser is supported by the script. Browsers supported by the script are Netscape versions of 3 and above, and Microsoft Internet Explorer 4 and above.

The InitialiseBannerAdRotator function then sets a timer called "TimerObject" for the time interval specified in the user defined variables. When this timer reaches zero, it then runs the ChangeImage function (the use of which is described further on).

The function also assigns zero to the BannerAdCode variable. This variable is used to cycle through the different images to be shown. Finally, the function pre-loads the images required by the script.

The second function in the script is called ChangeImage. This function increases the value of the BannerAdCode variable, ensuring that if it is too large for the number of different images, it is reset to zero. After changing the BannerAdCode variable, the function changes the image source ("src") of the image that has the name of "bannerad" to point to the next image in the sequence. This is the part of the script which actually changes the image on the page.

The final function in the script is called ChangePage, and is called when the Banner Ad is clicked on. This function reads the value of BannerAdCode, then sets the document (or frame) location to the new location. "location" is a built-in feature of JavaScript that allows you to specify the URL of the page loaded in the web browser. Note that if the banner is being viewed in a browser not supported by the script, it will set the page location to that specified in the DefaultURL variable.

Limitations

There can only be one instance of a banner ad per page on your site, although with a few modifications the script could support several banners per page. Don't forget that adding too much advertising to your site will distract users, so use sparingly.

The script currently cycles through a series of images, but it would not be too difficult to modify it to show the images in a random order.

The script doesn't open links in a new browser window. If you want the commercial version of the script that does, then you can purchase the full version for just $3.

If you purchase any of my other software products (ASP Documentation Tool, .NET Documentation Tool, The Website UtilityIndexing Service Companion) then let me know and I'll send you the script for free!

Downloads

If you would like the Banner Ad Rotator script together with some sample images, then click on the link below:

Further Reading

  Site Map | Privacy Policy

All content is 1995 - 2012