I want to be fair about this. Frames were exciting when Netscape 2 brought them
out in 1996. For the first time your menu could stay put while the rest of the page
changed, and it felt like the Web was growing up into real software. I built a
three-pane site and I thought it was the slickest thing in SiliconValley.
Here is what two years of reader mail taught me instead. Nine reasons, roughly in
order of how many times I've heard each one.
1. Nobody can bookmark anything.
The address in the browser's location box is the frameset page, not the page your
visitor is reading. They find your pot roast recipe, three clicks deep, and bookmark
it. Next week the bookmark opens your front page, and the pot roast is gone forever
as far as they're concerned.
2. Nobody can send a link to a friend.
Same problem, and this is the one that got my mother. Every copied address is the
front door. You can tell people to right-click and open the frame in a new window
first, but the people who know how to do that are not the people who need to.
3. The Back button.
In Netscape 2, Back threw you out of a framed site entirely. Version 3 fixed that,
and now Back steps backward one frame at a time, which confuses people in a whole
new way. Click Back and the menu changes but the page doesn't, or the banner goes
blank. People don't know which pane they're backing out of. They just know it
isn't doing what Back does everywhere else.
4. Printing.
Try to print a framed page and you get whichever frame you last clicked in, which is
usually the menu. My neighbor printed nine copies of my navigation bar before he
called me.
5. Orphans from the search engines.
The robots that crawl the Web find your inner pages and send people straight to
them: no banner, no menu, no way to the rest of your site. You worked hard on that
menu. Half your visitors will never see it.
6. Frames eat the screen.
A lot of people are still on 640 by 480, especially on laptops and in school
labs. Take away a 150-pixel menu and an 80-pixel banner and you've used up a little
over a third of their screen before they've read a word. Then the main frame gets a
scrollbar of its own, and so does the menu, and now there are three scrollbars on
one screen.
7. Other people's sites, trapped in yours.
Forget one target="_top" and every outside link you have opens
inside your main frame. I once read an entire newspaper story through a slot under
somebody's quilt banner before I figured out I'd left their site twenty minutes
earlier. It makes you look like you're claiming their work, and it makes the other
webmaster furious.
8. Three files to do the work of one.
Every screen is a frameset plus two or three pages, each fetched separately over a
modem. More to upload, more to keep in step, more to break. Rename one file and
the whole house falls down.
9. View Source stops teaching.
Everybody I know learned HTML the same way: find a page you like and choose View,
Source. On a framed site that shows you a frameset and nothing else. You can dig
for View Frame Source if you know it's there, but a beginner doesn't. Frames broke
the best free classroom on the Internet.
The one exception
I write software manuals for a living. A four-hundred-page manual with a long table
of contents is the one place I think a frame earns its keep: the contents sit on the
left, you jump around all day, and nobody bookmarks chapter twelve to show their
aunt. If that's your site, go ahead, with my blessing and
my tutorial.
Your cat is not a four-hundred-page manual.
What to do instead
Put your menu at the top or bottom of every page, as a plain row of links or a small
table. Yes, you'll paste it into every page, and when you add a section you'll
change every page. That takes a few minutes. It's cheaper than one visitor who can't
find their way back.
If you're already framed and want out, it's not as hard as it sounds. Paste your
menu into the top of each of your content pages, rename home.html to
index.html, and delete the frameset. I did mine in an evening, with the
ballgame on.