To frame or not to frame

As long as HTML has been in existence, the wars over whether or not frames were good or evil have raged in full fury. I have always been an advocate of using frames properly, particularly to aid in navigation, or to view multiple documents at once. In my case, frames would allow me to display text and photo thumbnails simultaneously; I felt this was important, since many users will be evenly divided in their interest between just the journal and just the photos.

Given the paucity of users who could not support this, I initially did away with my "noframes" design, and only catered to frames-based interfaces. But after I made the decision to support text-only devices, I backtracked on this slightly. Rather than deliver up static frameset pages, I used JavaScript to generate the initial frameset from the very beginning. So it was easy to add a few lines of <noframes> text, where users would be directed to the same place as those without JavaScript.

Navigation within the journal happened at two levels: within the day (moving among "chunks" of writing), and between days. The intra-day navigation was handled by JavaScript, and the selection of days was placed in a frame by itself. This meant users could jump to any day almost immediately (good for picking up where they left off), and to any location in no more than two clicks (one for the day, and one for the "chunk"). And since the use of frames prevented one from bookmarking a specific location, quick access to this type of navigation is crucial. (I discuss future ways of dealing with this better below.) The downside: text-only users would not have this frame, so they could only go forward, and could not jump around. But without frames, these users have the advantage of being able to bookmark their location at any time. Since the site is meant to be read from beginning to end, the loss of functionality seemed minimal. And, if it were really a big deal, a quick perl script could put the drop-down menu for selecting the day on the bottom of each day's chunk as a server-side include, surrounded by <noscript> tags, so it wouldn't show up twice when using the frame-based layout.

(continued)

Copyright © 2000
Last updated: 12 Jan 2000 14:49:28