HTML: To Frame or not to Frame
Dan Burns asks: "I work in a large firm and manage the website there and our website uses Frames for navigation and a scrolling news ticker. A consultant has been hired to develop an add on to the site. The work that she is doing will not work in within the frame structure and she insists that frames have been deprecated in order to support her style of design. I could care less if the group she is creating this for wants it this way, but I question the statement that frames have been deprecated. Is there any justification to this statement or is she blowing smoke? "
Looking at the list of new and deprecated elements carried in the w3c's specification for HTML 4, I see:
The following elements are deprecated: APPLET, BASEFONT, CENTER, DIR, FONT, ISINDEX, MENU, STRIKE, and U.
and
The new elements in HTML 4.0 are: ABBR, ACRONYM, BDO, BUTTON, COL, COLGROUP, DEL, FIELDSET, FRAME, FRAMESET, IFRAME , INS, LABEL, LEGEND, NOFRAMES , NOSCRIPT, OBJECT, OPTGROUP, PARAM, S (deprecated), SPAN, TBODY, TFOOT, THEAD, and Q.
It could be that she's gotten confused over the fact that the w3c also identifies "frameset HTML" as a "flavor" of HTML. But the frames-related tags aren't marked as deprecated anywhere in the document posted as "latest" on the w3c's page.
I'm guessing she's trying to use what she thinks is a $10 word (deprecated) to describe a design concept (unneeded and inappropriate).
------------
Michael Hall
mphall@cstone.nospam.net
Michael Hall
mph.puddingbowl.org
In the majority of cases, if not all, the use of frames can be replaced by nested tables. And there is an increasing trend to do this.
Using tables instead of frames will increase the number of potential users who can make sense of your website. If you have a frames based website, you should also provide a non-frames version out of consideration for people using a browser that doesn't support frames.
Anyone authoring a website with Frontpage (ugggh) will invariably have a frame based website when they don't need to. This means that a lot of mom and pop websites, as well as small commercial websites have frames.
Larger commercial sites are tending to not use frames unless they have a really good reason. Look at the source code for sites such as Oracle TechNet, Wired, and About.com for examples of sites that use tables over frames. Interestingly, Oracle Technet has only recently made the change and Oracle still uses frames.
Many commercial software packages for website design favour tables over frames. Macromedia Dreamweaver will do this I think, although their site uses frames.
Webmonkey has a good guide to how to construct frames, but the article does say
ask yourself: Do I really need frames at all? Most of the time, the answer is no. In my opinion, frames are only appropriate when you have a complex navigation structure going on - especially one that involves retaining a search query while reloading the search results (as in Cocktail or Net Surf Central).
At the end of the day the person you've hired has been asked to provide functionality into your existing web site, and while they shouldn't be stopped from making suggestions on how to improve your site, they do have a job to do. I'd be surprised if having frames actually prevents functionality being added.
Especially when you're doing dynamically created content, nested tables provide the same visual effect as frames, but are supported by MANY more browsers than frames (for example, it really sucks to not be able to load a site with lynx). I've several websites, sometimes using frames, sometimes using tables. Frames definetly can cut down on code duplication when you want navigation bars on every page, etc.; but only at the expense of lower browser compatibility. Tables make for a nicer looking product that will load in any browser (even lynx), though you may find yourself copying a lot of the same code to every page if you want navigation bars but don't do dynamic page generation (open a template, stick in content from one file, navbar from another, send page to client). Just my $0.02
My biggest gripes about frames are: 1- The keyboard interface for using up/down arrows to scroll requires that the frame being scrolled has the keyboard focus. This means you have to move/click over the scrolling frame before you can use the keys to scroll, which is tantamount to making the arrow keys useless. As a user preferring keyboard to mouse, I would much rather have the whole page scroll than have to use the mouse. 2- As a developer, I know creating content for frames is more costly. In addition to dealing with one "page" split over multiple HTTP requests, there is the issue that frames can't resize dynamically to fit their content, meaning that layout using pixel sizes is many times necessary, which in turns causes all kinds of compatibility problems. Last but not least there is the problem that browsers just don't support frames consistently, and I almost always have to write browser-specific code to get them to work properly. Worst of all is trying to support a frames or no-frames preference.
One of the better summaries is Why Frames Suck (Most of the Time), one of Jakob Nielsen's Alertbox columns. He's revised his opinions a couple of times since the original (it was written in December of 1996), but still holds to them; check out his "Top Ten Mistakes" Revisited column, for example.
I strongly recommend his entire site, which is full of advice on various web design and usability issues. You may not agree with all of them (I'm not sure I agree with him about scrolling web pages), but I've found the issues he raises all worth thinking about.
1. Older browsers can't see them, and if someone's been ignoring those "Upgrade Your Browser So You Can See My Site!" noframes notices for this long, they're certainly NOT going to upgrade just for you.
2. Most search engine robots can't go through frames sites. If they can't go through, you can't get indexed. If you can't get indexed, nobody finds your site.
3. Bookmarking, Bookmarking, Bookmarking. You want people to bookmark your site, right? Do you really expect them to bookmark the first page of your site and THEN go surfing to the correct page every time they want to see something? Alternatley, if they DO know about the right-click bookmark frame page trick, you're going to have to have ALL the navigation you had frames to take care of on each one of those pages so people can get around if they're going to a single bookmarked/linked page.
4. Many many people find those scrollbars everywhere incredibly annoying. You can't use ANY kind of tiled background (when you scroll, the background doesn't match up, looks dumb..but so do tiled backgrounds)
Okay. Now, the reasons people use frames.
1. Ease of navigation.
If your site depends on frames to give it good navigation, you need help. It's NOT that hard to implement a good table-based navigation scheme that doesn't have the problems of the frames-based design.
2. Pages don't have to reload.
Yes, it will speed up your current site, but if you REALLY need frames to give it that extra little speed increase you really need to learn image optimization and alternate ways of doing design that don't involve huge graphics.
3. Can change one frame file and all the pages are changed.
This can be also done with SSI, CGI, ASP, or Front Page Includes. There's no reason why you SHOULDN'T be able to use any of these methods, and you will often find these are MORE useful for frames (Can change copyright info, etc.)
There we go. If you want a more in-depth discussion of frames, point your browser over to C|Net's Builder Buzz and do a search for "Frames"
My gripes are: (1) makes bookmarking a pain in the butt, and (2) makes printing the entire page impossible.
-- Don't Tase me, bro!
This is no longer true in IE 5.x. It has the option to print the entire page, frames and all, if desired. Pretty cool for a Micro$oft thing.
Later...
KangarooBox - We make IT simple!
One useful thing about frames is that a programmer can hide complex navigation from web application users. I prefer to use 'get' calls for navigating users through web apps, which tend to make for long urls. I would rather not have a user even see this part of the application's backend. For many of the online applications I develop, there is a set flow to the pages. If a user tries to mimic one of the 'get' calls, he could cause the data to become out of sync. I could check for the proper creditials to prevent a user from navigating where he shouldn't, but I would rather save time counting on the fact that the backend is hidden well enough from curious users.
m4 lets you do a server-side include, once :-)
I use it for my site, so I can have _both_ a frames and a non-frames version. In addition, if I need it, I can make gzip/compressed version (for HTTP/1.1 compression), I can add a new button to all non-frames pages at once, etc. etc. etc. m4 is your friend. And it's GNU...
/* Steinar */
(This comment is of course GPLed.)
A look at the other threads shows there's lots of frames vs. (nested) tables argument going on here.
Frankly, there is no good answer. Frames suck for all the reasons frames suck. Tables suck because:
Upshot: Why are we trying to make pages look like the interfaces to applications? That's how we got into this mess. The tools just don't do what we're trying to get them to do.
Sorry to be a party-pooper.
----------------------------------------------
-*- Any technology indistinguishable from magic is insufficiently advanced -*-
Generally, I avoid frames as much as possible. That said, there are some wonderful arguments for them, including how they make it possible to frame other kinds of remote content inside of consistent local nav banners. I really is a big help.
Against the preceding you really have to chalk navigation problems. Nothing drives me battier (almost nothing) than being forced to bookmark a root page and then have to navigate my way to some deeper page. Ugh.
P.
See the posting -> From the w3c itself: Frames have not been depreciated in HTML 4.0.
The company I just left uses frames. Here are the propblems that I saw with there application and there use of frames.
Learnign HTML is not that difficult, and the best resource out there is www.w3.org. There are also many examples at bother netscape and IE developers sites, and dozons of books.
send flames > /dev/null
Only 'flamers' flame!