Some pet peeves

Viewing source is hard

In Lesson 1 I mentioned how important viewing the source of these pages is if you're trying to learn HTML from what I've written here. If you've tried to do that with this page, your experience will be very different from browser to browser, and you may end up frustratedly wondering where most of the content is located. Frames-based webpages are made up of several different HTML documents sewn together in (yet another) HTML document. Some browsers will show the source for the topmost document, and some (especially if you're inspecting elements rahter than viewing the source outright) will show the source of the whole website at once. You should be aware thet you cannot create a frames-based website by writing one document which defines every frame; every frame must have its own HTML document associated with it. Click the below links, depending on your browser, to view the source of the frameset (topmost) HTML document for this lesson:

Too many doctypes

I previously mentioned that frames are not HTML5 compliant. This means we need to use one of the three HTML 4.01 doctypes at the top of our HTML documents when we write pages that use frames. (Technically you could have HTML5 compliant pages linked inside an HTML 4.01 compliant frameset, but let's suppose you're designing using frames for an older browser that doesn't know what to do with HTML5, anyway.) The document that defines the structure of the frames uses the HTML 4.01 Frameset doctype, while the documents that make up the frames themselves should either use the HTML 4.01 Transitional or the HTML 4.01 Strict doctypes. This particular page uses Frameset and Transitional, since many functions necessary to a functional frames-based website aren't supported under the Strict definitions.

Compliance is impossible

If you want to have seamless frames, as I (hopefully) have accomplished in your browser window, your code can't actually be compliant with HTML 4.01 specifications. Browser vendors didn't want to spend the time making their products compatible with standards that really only define cosmetic elements of the page when they could be spending that time and effort making their products more secure. As a result, when you run this page through the W3C HTML Validator, you get an error. I've had to put a nonstandard border attribute in the frameset tag, which isn't defined in the HTML 4.01 Frameset definitions list. This problem is unlikely to get fixed anytime soon, so if for whatever reason you find yourself working with frames, it's something you should be aware of.