A frame document has no <body>. It must not, since the browser ignores any frame tags if it finds any <body> content before it encounters the first <frameset> tag. A frame document, therefore, is all but invisible to any non-frames-capable browser. The <noframes> tag gives some relief to the frames-disabled.
You should use the <noframes> tag only within the outermost <frameset> tag of a frame document. Content between the <noframes> tag and its required end tag (</noframes>) is not displayed by any frames-capable browser but is displayed in lieu of other contents in the frame document by browsers that do not handle frames. The contents of the <noframes> tag can be any normal body content, including the <body> tag itself.
Although this tag is optional, experienced authors typically include the <noframes> tag in their frame documents with content that warns non-frames-capable browser users that they're missing the show. And smart authors give those users a way out, if not direct access to the individual documents that make up the frame document contents.
Remember our first frame example in this chapter? Figure 11-5 shows what happens when that frame document gets loaded into an old version of Mosaic.
The HTML to produce this message looks like this:
<noframes> Sorry, this document can be viewed only with a frame-capable browser. Go to the <a href="frame1.html"> first HTML document</a> in the set. </noframes>
<noframes> works because most browsers are extremely tolerant of erroneous tags and incorrect documents. A non-frames browser simply ignores the frame tags. What's left, then, is the content of the <noframes> tag, which the browser dutifully displays.
If your browser strictly enforces some version of HTML or XHTML that does not support frames, it may simply display an error message and refuse to display the document, even if it contains a <noframes> tag.