Netscape 2.0 introduced the elements used for frames in the 1990s (see Netscape Navigator). At that time, Netscape proposed frames to the W3C for inclusion in the HTML 3.0 standard.
The frameset replaces the <body> and </body> tags, and describes the dimensions (in percentages) of the frames. These percentages should add to 100, though the last one may be replaced with an asterisk as a shortcut to the remaining screen space. Within the frameset, the framed panels are described with their source documents. The
The contents of the frames may be hosted on the same server as the parent page, or it may link in code from another website server such that these external contents are automatically displayed within the frame (transclusion or remote loading). This may be confusing and inconvenient to the users: they can get the impression that the information belongs to the same website; also, less than the full browser window is available and the address bar is less informative. Some websites request not to be used in this way on other websites; some discourage it by including a framekiller script in its pages. The framing website runs a risk of being blamed for external content that, for example, is or becomes inaccurate or objectionable. In addition, there may be legal issues associated with framing, in that the owner of the external content may object to the involuntary (and possibly objectionable) implied association with the framing website. Visitors may confuse ownership of copyrights or trademarks of the external site with the owner of the framing site.
Chief criticism of the practice of framing HTML content includes:
Although frames were included in the XHTML 1.0 specification, they were not carried across to XHTML 1.1. The intended eventual replacement is XFrames , which attempts to solve the problem of addressing a populated frameset through composite URIs. For those serving web content under the XHTML 1.0 specification, documents may be embedded within one another via either the object or iframe element tags. Under the 1.1 specification, iframe was removed, leaving only the object element for transclusion until browsers begin support for XFrames. Unfortunately, Internet Explorer 7 does not handle objects used to replace the function of an iframe, it doesn't recognize that a link from within the included page has the containing page as its _parent. Therefore constructing a menu to be included on every page, in imitation of a frameset, fails as the parent frame cannot be targeted. KHTML and Gecko based browsers, like Konqueror, Safari and Firefox, however, work perfectly well with this construct.
Frames are removed in the HTML5 draft, citing usability concerns.