Popup Windows: The Basics

We'll begin the tutorial by creating a basic popup window. The technique described here addresses all the major issues in popups. The popup always comes to the front. Different links can target the same popup. The code is simple and easily modified. Everything for the rest of the turorial is a variation on the theme described here. The code in this page creates a popup that is opened from a link. In this section we'll show the code with just the minimal description you need to get it going. For more details see Under the Hood: Details of the Popup Script.

First, copy this script into the <HEAD> section of your page:

<SCRIPT TYPE="text/javascript">
function popup(mylink, windowname)
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
window.open(href, windowname, 'width=400,height=200,scrollbars=yes');
return false;

For now we'll skip the details of how the script works, (see Under the Hood: Details of the Popup Script for a line-by-line description), and move to the next step. The script above opens the popup, but something needs to run the script. The most common situation is that the script is run when the user clicks on a link. A link like the following would run the script:

onClick="return popup(this, 'notes')">my popup</A>

which creates this link:

my popup

Most of the link is as usual. The URL of the page being linked to is in the HREF attribute. We've added an additional attribute called onClick. Copy the code as it is into your link, with only a small modification. The second argument of the popup() -- 'notes' -- indicates name of the popup window. Every popup window should have its own unique name. Be sure to put the name in single quotes (''). So if you want to name the popup 'stevie' then this would be the code:

<A HREF="popupbasic.html" onClick="return popup(this, 'stevie')">my popup</A>

Read This Next Part Or You'll Go Insane Trying to Figure Out Why Your Popup Doesn't Work

A small but crucial point is often overlooked. The command in onClick must begin with return or the script won't work. Be sure to start the command with return like this:
onClick="return popup(this, 'notes')"
Now we've created and opened the popup, but there's one detail left. One of the most frustrating problems with popups is that once they are opened they have an annoying tendency to stay in the background. The first time the user clicks the link the popup pops up in front, but if the user then clicks back on the main page again without closing the popup and then clicks on a link to open the popup again, it won't come back to the front. It stays stubbornly in the background, leaving the user to wonder why the link didn't work.

To avoid this problem we have one more piece of code. This code does not go in the main page. Put the following code in the popup page itself. So, for example, the link above opens the page "popupbasic.html", so the following code is in "popupbasic.html", not the page you are reading right now.

<SCRIPT TYPE="text/javascript">

When the page in the popup is loaded, this script tells the browser to put the focus on the popup. This means that the popup comes to the front every time.

That's all the basic pieces to a popup. Everything from here out is a variation on this theme.

About the Author
Copyright 1997-2002 Idocs Inc. Content in this guide is offered freely to the public under the terms of the Open Content License and the Open Publication License. Contents may be redistributed or republished freely under these terms so long as credit to the original creator and contributors is maintained.