I can imagine one good use of frames, but I'm afraid it would be somewhat dependent on the browser in use. Standard solutions however, should not be.
I understand your request for a solution where you don't have to download the whole page every time someone clicks a menu entry, but there's really no need. Caching will make sure that most or all unchanged content will not be downloaded again.
If you insist on this, I would make a compromise: Let one frame be completely hidden, and load changed elements into it before copying them to their destination by assigning it using InnerHTML.
Thus you can load only one div at the time if you wish, or actually any single object which has an ID. This takes some work and knowledge of JavaScript and the DOM. It's not really hard however; I did that several years ago when I was just learning JavaScript.
I think this could be done even more elegant with AJAX however, because it would allow you to scrap the frames altogether.
Every hour you spend on learning these things will pay you back with interest. It takes some work and a lot of dedication, but you could end up being a real guru!
For my own sites I have to a large extent gotten rid of this "elegance" and I use mostly php for the "heavy" work. That way most of the contents of the website must be reloaded for every change, but the speed is so fast you would seldom notice that there has been a change at all, except it you watch and observe the contents changing.
A simple function for modifying the sizes of all "em" sizes elements
here: Use <body onload="once()">:
<script type="text/javascript">
var H, W, B4=false;
function once() // Executed only once.
{ if (B4) return;
B4 = true;
window.onresize=resize;
resize();
}
// Match body font to size of window.
// Percent of width: Define the size of "1.0em"
function resize() // Set font relative to window width.
{ if (window.innerWidth)
W = window.innerWidth;
else
W = document.body.clientWidth;
P = Math.floor (W/33); // ca. 3 percent constant
if (P<12)P=12; // Smallest size.
document.body.style.fontSize=P + "px";
document.body.style.visibility="visible"; // Make sure it can be seen.
}
</script>
The "innerHTML" element is used in a similar fashion to modify contents. You can use visibility to switch visibility on/off.
Oh; a last comment: The pages you used as examples are so excruciatingly slow that I'm really wondering why they bothered with this (framed? Haven't looked at the code) system in the first place. I'm convinced that they both would have been smoother and faster using a more modern, standard solution.