I have heard countless reasons on why not to use HTML frames, from their lack of accessibility, the general lacking in UX, their being completely inefficient/unmaintainable, or
(1) Not inherently. iframes have many use cases that do not suffer from the problems of frames. They're useful any time you want to mix in a document from another security context, or without the scripting and styles that the parent page is using.
However, it is possible to ‘use an iframe like a frame’: to split the page up into separate iframe areas, with cross-frame-links making a navigational mess that doesn't play well with bookmarks, open-in-new-tab etc.
(2) I would not use frames for anything today. There was a limited use case for them keeping hold of large amounts of page content that you don't want to reload on each navigation. But these days we would just use XMLHttpRequest
to update part of the page instead.
Even so, without care taken to make page-changing links accessible (using hash-history and having a static-link analogue for each hash-link, linked with real s that response to middle-click et al), a page that updates/navigates itself using
XMLHttpRequest
will recreate many of the navigational problems of frames, with strongly negative usability, accessibility and SEO implications.
I find it a bit sad that many authors are creating flashy, swooshy, “modern” animated web sites that, by naïvely using jQuery's load()
or similar on its own, exhibit all the worst behaviours of ancient, hated frames.