“Frames allow an author to display multiple documents in a single window that is divided into rectangular subspaces called frames. Visual browsers allow these frames to be scrolled independently of each other, and links can be loaded in a frame without changing the content of other frames.
The HTML 4 frames model has significant flaws that make frames hated by many users. Frames should only be used with great care;…” – WDG
Frames pose a number of issues and reason for you not to use them in your site’s design/layout. I always preach against using frames unless it is absolutely necessary for anyone to use them. If you are going to use frames, make use to set the doctype correctly:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
This will declare the document to be HTML 4.01 Frameset.
Some of the main factors/reasons for not using frames are not all SEO related. The problems with frames are mostly related to accessibility and usability.
Any browsers that do not support frames will basically skip over the frame tags and the frames would not be displayed. There is a NOFRAMES element that allows the webmaster to specify content for these browsers that fail to show frames; this only means that he/she has to put in some extra effort.
On the search engine side, a cache version of the page that is in a frame does not store that fact that it was actually meant to be in a frame. When a visitor clicks on the link to the framed page, they go straight to the page and not to the parent page that includes the framed page. The visitor will them be viewing an incomplete version of the original page. There are scripts that can help to redirect the page to the parent page, but then again not all browsers will support the script.
Iframes are less complicated than using the above framesets, but they still suffer most of the same problems.
There are also CSS issues with frames. You cannot control the look and feel of a framed document with the CSS file of the main page. Some people have claimed that it is possible using JavaScript in the CSS, but I have not seen a working example yet. It just gets too complicated!
The bottom line is… avoid using frames! For company intranets there is no SEO concern and there will be cases where frames can be useful. Think carefully before using frames for websites; there is probably a better solution out there. Let us know if you have another solution…