Search
Articles
- » Never ever use frames
- » Improving web application usage
- » Designing Web applications
- » Research Open Source
- » Why use web applications?

Although I always tell them not to ever use frames at all, I tend to never make clear why they should not use frames, because it seems so obvious to me.
The main reason why one should never use frames� is the high development cost. This means you could use frames, if, and only if your budget is� around € 100.000,- and you have a great knowledge about using frames, because you will need both of these to develop and maintain your web application or website.
For each and everyone who still thinks they can or maybe even should use frames for some reason, I want to make clear that almost� anything you would use frames for can be� achieved without the use of� frames. Using inline frames is always good, since these are not accounted for as being a real frame within a frameset, but that is a different discussion.
Now I hear some people wonder already why frames should never be used. Okay, everybody feel free to add more problems with frames to this list, but I will start showing the most obvious problems.
- Browser incompatibility
some browsers simply cannot handle frames. Older browsers cannot although this is not really important anymore since they are barely used anymore. But a lot of browsers on mobile devices also cannot display frames, which is a very important problem to think of in the very near future. Also browsers for visually impaired people most of the time cannot handle frames. - Search engine incompatibility
most search engines simply do not index frame sites because they cannot be read. When at some point they magically do find a frame page, they tend to not display the frameset correctly when a users clicks on this page. Usually only one page of the complete frameset is displayed, leaving users without any form of navigation (since this is usually another frame), sometimes even generating javascript errors, and� the page� style usually being messed up. - Titles not visible
A big� issue in web usability is to display a different title for every page a visitor sees. This to improve the awareness of the user of their current location. Guess what? Not possible with frames… Only the title of the frames page is displayed at all times. - Many more files
to really use frames one should create for example 4 files to display one page to a user. The frameset will be loaded who will load another 3 pages making you develop 4 complete pages, and separate unnecessarily them into many files on the server. This makes the file management a lot more complicated, especially when you have 10 different framesets all loading content in different frames. Can you image all the folders and files you need to create!? - Bookmarking errors
some browsers incorrectly bookmark frame pages. This means they bookmark the frameset, when in fact the information people want to save is in one of the sub frames. When visitors then try to find back the page they bookmarked, they will get the standard frameset page again. This also applies to sending someone a link, through ICQ or Messenger for example. A user simply copies the URL from the address bar and gives it to a friend, who will see a completely different page when he or she opens the (frameset) link. - New window problem
many users will open a new page in a new window, not even to speak of the current hype of using tabbed browsing. When a user opens a new page in a new window or tab (using ALT-click or CTRL-click) only this one frame will be visible, leaving all other important frames out of focus. In this case the navigation and for example the page� header will not be visible anymore, one of the� no go’s� when discussing web usability. - Scrolling
when using big frames with fixed sizes, or using many frames, there will be a lot of scrollbars visible which are not intended for use. For example when a window is pretty small, a visitor sees� one horizontal and one vertical scrollbar, but when using frames, a visitor could see 2 scrollbars for every frame,� which results in the mess-up of almost every page. Next to that, try clicking on a menu and then scrolling another frame. To do this, a visitor should first move their mouse to the other frame, and sometimes even click it to make it able to scroll again… - Javascript
when we get to scripting a little bit, we see that javascript has a good interpretation of frames. The frame names can be used to execute a command in a certain frame, or even in multiple frames at once. But� it� would be even more easy� to� not use frames, but just one page? In that case the javascript code can be programmed more simple and much faster! - No javascript
and what about people having javascript disabled? With frames, most of the time javascript is absolutely necessary, for example� to� reload 2 pages with one click on a link. Without the use of frames, the need for javascript is mostly optional, instead of required. - Printing
This subject is so obvious, I think you should try it yourself. Print a frameless webpage, and try to print a frameset. You are bound to get problems, just like a lot of your visitors who do still print certain pages to refer to later. - Slow
slow you say? But I thought frames where supposed to improve speed on webpages? Yes absolutely true, but this concept also has a downside. The fact that only one frame (a part of the page) needs to be loaded every time� is a good advantage for visitors with slow connections, because the data transfer is the bottleneck, not the number of server connections. With high speed internet these days, the number of server connections is more important in defining the speed of a webpage. When using frames, a visitor enters a webpage, for example loading� 4 pages (frameset page + 3 frames; top, menu and content). This means that there� need to� be 4 connections to� the webserver, compared to only one connection when not using frames. The data loaded is almost the same, but the number of connections also has a great hit on general performance. Now when surfing through a frames webpage, every time only one frame needs to be reloaded, just like any non-frame webpage. This means that when browsing through 20 pages the� difference in� connections is almost nothing, 20 connections for a regular page, and 23 connections for a frames page.� A difference of only 15%. But wait… the average user nowadays only views 3 pages on every webpage! Yes, now I hear you think… 7 connections against 3… wow a difference in connections, and therefore speed, of over 50%! Oh, and I haven’t even talked about the browser interpretation speed of frames. - Session problems
in the more technical programming of frames we see a very annoying subject rise, namely the use of sessions within frames. Each server request for a file is done in a separate frame, and therefore each frame will receive their own session ID. This means that a very much used programming technique cannot be used anymore. This means frames are pushing the programmer to use different programming techniques, wow, that is what frames can do!� There are of course ways to work around this, but as usual they will all cost only more and more time to develop and to maintain. - Legal Issues
if you would use a link in your website that loads a different webpage, the visitor might not be aware that he or she is viewing a different webpage. This might be interpreted wrong by the user which means the webpage is misleading. You might have serious legal issues with this.� In a case in Scotland in 1996 called the “Shetland Times Case” a judge agreed that the Times had presented at least a prima facie case of copyright infringement based upon� a United Kingdom’s law.
Well, as you can see, frames� have a big impact on your budget. If they are used, they will make your life miserable if you don’t implement them thinking of all these subjects, and maybe more. Again, when you have a big budget or a very specific reason to use frames,� I’d say� give it a try, but also take a look at Server Side Includes, AJAX and IFRAMES before you even think about using frames, they might solve your problem more easy and efficiently.
More articles about using frames in webpages:
- http://www.yourhtmlsource.com/frames/goodorbad.html
- http://www.useit.com/alertbox/9612.html
- http://itc.virginia.edu/desktop/web/frames_problems.html
- http://www.google.com/support/webmasters/bin/answer.py?answer=34445&topic=8522
- http://www.searchenginesbook.com/frames.html






