HTML suggestion -- DFrames

I'm tossing this idea out here to bypass the absurd amounts of red tape, in
the hope that someone may consider it to have a morsel of merit. I'll
probably get shot down and flamed, but I feel that I should at least make
this idea public so that, should it have merit, it does at least get publicised.

DFrames (let's pretend D is decentralised) is an approach to frames that may
solve most of the problems currently associated with them, yet keep their
benefits. It's a JavaScript-free alternative to AJAX for those who don't
want to use JavaScript.

The classical idea of a frameset is that it's a visual structure document
that wraps a whole site. What happens if you turn this hierarchy inside out?

Inside <head>, include this tag:

 <frameset href="/my-frames.html">

The UA will check this href against the currently-loaded frameset and if the
URIs match, nothing happens. If the URIs do not match (including if the
current URI is the empty string) the frameset is loaded first, along with
all of its default frames; the current page is slotted into the "_current"
frame (which must exist).

All links are assumed to target _blank unless stated otherwise, but if the
URI refers to the same host and the new page refers to the same frameset in
<head>, then the page is redirected to _current as if it were a normal
frameset site. Because the frameset is now referenced by the page itself,
the address bar will show the address of the current page at all times.
Better, if you jump straight to that page, the UA can fetch the appropriate
frames.

As long as all pages on the site reference the same frameset, the frameset
will remain present. If the any frame makes changes to the frameset
(including a link with target="some-frame"), the browser will leave these
frames be.

A site can use multiple framesets for multiple site sections, by having the
<frameset> tag in <head> simply refer to a different frameset file.


Take this any way you will. Enjoy.

- Daniel.

Received on Wednesday, 20 February 2008 16:42:31 UTC