Occasionally, I have been asked why I avoid frames on my web pages. Rather than explain myself repeatedly, I think its worth sharing some insight on how users, or at least this user, navigates the web.
A premise
The web is slower than a book, unexpected behavior should be avoided, and forgetting/obfuscating information is bad. All of these issues, as described below, are trivial to avoid from the user’s experience by eliminating frames.
I am a firm believer that one of the underlying purpose of computers is to take the burden of remembering the details away from users, permitting them to concentrate on their own big picture. When someone’s application, for whatever reason, forgets (or just hides) some information given to the computer, users find it very unnerving. Recognize that hiding the details from the user discourages learning as well as discourages personal responsibility. Specifically, just tracking the details is the machine’s contribution.
The web is slow
Having a so-called “high-speed” Internet connection doesn’t guarantee that pages will download any faster than they did with an older 56k modem. While the origin of the delays may relatively easy to determine (e.g. ISP throttling, message propagation times) the fact remains that users seldom get an “instant” response to any request. Consider, when reading a book, at the turn of the page, perhaps a 1/10th of a second, one can be reading the next page. On the web, it can, and often is, more than 10 seconds before reading the next page can start. Easily two orders of magnitude longer.
With a book, your copy of the next page is already available, not so with the web. However, the web often permits the reader to decide on what the next page should be in a sensible way. Certainly, while reading a book, you could arbitrarily choose to read some page other than the next page, but in the general case with books, there is seldom value in this approach.
To be able to emulate the response of a book while benefiting from the options offered by the web, many user’s have learned the approach of opening additional pages in a new window. Most graphical browsers permit trivial access to this option. After selecting a desirable “next” page(s), the user can return to the original page, and begin/continue reading, while the queued pages load in the background. The ability to load the next page(s) prior to completing the current page makes the difference.
As with many good things in life, this approach often encounters problems, generally they can all be described at “forgetting” some detail information I’ve imparted on the computer. When the new window is opened in a new window from a page using frames, it often lacks the navigation bar available in the original. This results in a page that does not appear as the author intended it (i.e. it’s ugly) and somewhat, if not completely, non-functional (the embedded links do not behave as expected). Some pages attempt to detect that they are being opened in a new window, and “fix” the missing navigation bar, but fail to remember what page they were originally instructed to open, returning to the default or index page for the whole site. Not only not the intended behavior, but also causing the loss of information.
Unexpected behavior
The most notable “unexpected” behavior results from a problem stemming with the browser’s implementation of the HTML “target” option. For some reason, even though the page has been opened in a new window, most (if not all such equipped browsers?) search for named targets outside the current window. Meaning, if I choose a link in one window, it can, and when using multiple windows, very likely will affect the contents of a frame in a completely different window. This misbehavior often make the link appear broken, but worse yet, causes a whole separate window to “forget” information I expect it to contain.
When viewing multiple pages containing large tables of information, there can b a desire to swap repeatedly between pages. Using the browser’s “back” and “forward” buttons forces the pages to be re-rendered, almost invariably consuming additional time. An example is a bank’s web pages, where, for security purposes, “no-cache” is set on all pages showing the transaction lists. While it may be a wise security choice, it does nothing for performance. Were the menu to have been to have not been in a separate frame, user’s could easily have open both views of the data in separate windows. This is Something that could easily have been combined into one page via SSI.
Obfuscating information
Ultimately, the web is about information. That information includes the details of how the information interrelates (no, that isn’t a redundant statement). The ability to divine this information becomes lost, or at best, complicated, with frames.
When discussing the information on a web page with others, the preferred approach is transmit the URL to the specific page of interest. Being conscious of the restrictions incurred with frames, a web page viewer can take the appropriate steps to get the direct URL to the specific page of interest. However, many naive users are not aware of the subtleties associated with frames and as a result will send a link to just the default page of a site, while intending to provide information about a a specific page on that site.
Resolution
Perhaps in the future, browser implementations will constrain the search for targets to the current window, and adjust themselves as appropriate. Maybe they will even force naive users copying the URL to choose from all open frames. Unfortunately, this is not a direction I see the builders heading.
It could be said that I am stuck in my ways, and it is likely that in many ways I am. However, in this instance, until something changes, I still find frames to be an annoyance to my web browsing experience. The reality is, I, and many other users, don’t have the patience to wait for the next download, prefer consistent behavior within a window, and certainly don’t appreciate information being hidden. It has been said that the devil is in the details, but it is also true that the better man knows his enemy.
While many talented web designers will probably continue to wallow in their unprofessional use of frames, I elect to accomplish my page designs without frames. I believe it makes for a better user experience. Sure, I may have to learn a little more to work around the problems that using frames solves, I believe in the end it is about the user’s experience, and not how easy it was for me to whip out yet-another-web-page.
Postscript
Yes, I am aware programs exist that “spider” a page for you and pre-load your browser’s cache with the remaining links. However, this really isn’t appropriate use of bandwidth (Not to suggest that I am a bandwidth conservation nut, but there is a limit the speed into my house, as I’m sure there is into yours). Further it still doesn’t address rendering time or pages that result from a query.