Frames: Simplistic Summary For The Noob?

P

(Pete Cresswell)

What I've gleaned so far:

1) The main purpose of introducing Frames was to permit a list that could remain
visible even though the main screen was scrolled.

2) Frames are undesireable primarily because they cannot be bookmarked.

3) Using only HTML or XHTML, there is no other way to achieve a list that
remains visible even though the rest of the content is scrolled.

4) There are other (acceptable) means of achieving #1, but they involve things
other than HTML/XHTML.
 
R

rf

(Pete Cresswell) said:
What I've gleaned so far:

1) The main purpose of introducing Frames was to permit a list that could remain
visible even though the main screen was scrolled.

What list?

And why? This is simply using up valuable real-estate that could be given to
the content. Is there *any* specific reason for the list being on-screen all
the time? If you put it at the top of the page then it's only a keypress
away.

Do you tear out the contents page of your magazine and keep it in view all
the time?
2) Frames are undesireable primarily because they cannot be bookmarked.

There are many other undesirable things about frames. Google for "frames are
evil".
3) Using only HTML or XHTML, there is no other way to achieve a list that
remains visible even though the rest of the content is scrolled.

Yes there is. Position: fixed. There is a hack that will make IE simulate
this. There was a thread about this a day or so ago. Look for some links
brucie supplied.
4) There are other (acceptable) means of achieving #1, but they involve things
other than HTML/XHTML.

Well, strictly speaking the solution to 3) *does* involve CSS, but that is
kosher.
 
B

brucie

In alt.html (Pete Cresswell) said:
1) The main purpose of introducing Frames was to permit a list that could remain
visible even though the main screen was scrolled.

thats basically what the recs say in html4 but in xframes (informative
not normative) it says:

<quote>
Frames were introduced into HTML at version 4.0 [HTML4]. They introduced
a manner of composing several HTML documents into a single view to
create an application-like interface.
</quote> http://www.w3.org/TR/2002/WD-xframes-20020806/#s_intro

it also mentions the main problems with frames.
2) Frames are undesireable primarily because they cannot be bookmarked.

i would go with orphan pages and accessibility as bigger problems but
bookmaking is probably the one noticed by most people.
3) Using only HTML or XHTML, there is no other way to achieve a list that
remains visible even though the rest of the content is scrolled.
true

4) There are other (acceptable) means of achieving #1, but they involve things
other than HTML/XHTML.

position:fixed; in css. not supported by IE but there is a workaround:
http://devnull.tagsoup.com/fixed/
 
P

(Pete Cresswell)

RE/
What list?

And why? This is simply using up valuable real-estate that could be given to
the content. Is there *any* specific reason for the list being on-screen all
the time? If you put it at the top of the page then it's only a keypress
away.

Do you tear out the contents page of your magazine and keep it in view all
the time?

The specific situation I had in mind was actually the reverse of what I thought
frames were for. I thought frames were to enable keeping a list visible while
the main content was scrolled. The specific situation I was thinking of was a
list that could be scrolled without scrolling the content.

I'm thinking in terms of data retrieval: a list of 200-300 "things" that the
user can click on to see specifics for the currently selected thing. And,
additionally, that the user will want to jump from thing-to-thing and not do
much else. e.g. out of 200, the user might want to peruse 5 or 10....but
there's no rhyme or reason to which 5 or 10.

At some number of list entries, one can argue that the list SB a subset chosen
by the user; but whatever number one might choose, I'm pretty sure that number
would be larger than the number of list entries that could be shown on, say,
800x600.
 
R

rf

(Pete Cresswell) said:

Pete, rather than this rather strange RE/ thing you put in there please
attribute the person you are quoting. It makes it much easier for the next
person in the thread to follow who is talking to whom. Like this:
rf wrote:

The specific situation I had in mind was actually the reverse of what I thought
frames were for. I thought frames were to enable keeping a list visible while
the main content was scrolled. The specific situation I was thinking of was a
list that could be scrolled without scrolling the content.

<iframe> was designed for this but it has many of the problems that real
frames do. You *could* use an iframe in this situation but I would not
recommend it, you would be seperating the "main content" out into another
..html file.
I'm thinking in terms of data retrieval: a list of 200-300 "things" that the
user can click on to see specifics for the currently selected thing. And,
additionally, that the user will want to jump from thing-to-thing and not do
much else. e.g. out of 200, the user might want to peruse 5 or 10....but
there's no rhyme or reason to which 5 or 10.

200-300 things? I see such web pages from time to time. A bloody huge list
of things that I have to scroll down. I usually get eye strain after a few
screenfuls and simply ignore the list and move on to the next site that
arranges things in a more hierarchal manner.

That aside you probably need a div, or even a table if the data is tabular.
Give said element a specific height and specify overflow: scroll. This
however causes yet another collection of bad things, the least being that
the poor viewer has *two* scroll bars to look after.

A re-design may be in order. At the very least explain what you are up to.
Somebody may have been there before and will be able to give you alternative
solutions.

<aside>
For just a moment sit in that chair over there --->
Pretend you are your viewer.
Consider how she feels when confronted with a three hundred line long list
of things to choose from.
Try to get as as cranky as she might when she cannot find the proverbial
needle in your haystack of choices.
Imagine what she might be thinking about how this page might be better
designed.
At some number of list entries, one can argue that the list SB

Er, what is an SB?
a subset chosen
by the user; but whatever number one might choose, I'm pretty sure that number
would be larger than the number of list entries that could be shown on, say,
800x600.

Lost me here. But, what does 800x600 have to do with anything. No browser
canvases are 800x600. Oh I suppose I could contrive one to be that big, just
as I could contrive one to be 4000 by 1200 or 800 by 3000[1]. I don't
though, my browser is usually about 921 x 1065.

[1] http://users.bigpond.net.au/rf/facts.jpg - check the dimensions of that
image, 840x1987. Yes, that is a real image of my browser.
 
B

brucie

In alt.html rf said:
That is a Very Wide browser. But how

t
a
l
l

can you get it?

1200px but my majic graphics drivers can turn the display 90deg (never
tried it) so i'll have to give that a go one day and see if i can get
6400px.

bloody hell. its a fine balance between tallness and the amount of
rubber available on your mouse wheel, i think you've gone a little too
far with tallness.
 
P

(Pete Cresswell)

"SB" = Should Be.


rf Said:
A re-design may be in order. At the very least explain what you are up to.
Somebody may have been there before and will be able to give you alternative
solutions.

<aside>
For just a moment sit in that chair over there --->
Pretend you are your viewer.
Consider how she feels when confronted with a three hundred line long list
of things to choose from.

There's nothing to re-design. I'm just a desktop/database application developer
trying to get oriented in the Web world.

Typically, my desktop designs contain a screen that has a scrolling list of
"things" on the left and details about the currently-selected "thing" on the
right - often in a tabbed presentation. e.g.
http://www.fatbelly.com/ProjectManagement.jpg is a screen snap from a project
management system. Projects are listed on the left and the right side of the
screen tells everything there is to say about the currently-selected project.

If the the list has focus and the user starts to type, the list will
auto-position itself to the item that matches the typed string. Over top of the
list typically are various canned subset choices.

The screens usually run in two modes: "Browse", the default mode; and "Edit"
which the user must specifically invoke.

This works well in a desktop environment. The general approach has been used
on dozens of small database projects developed hand-in-hand with the users. If
it didn't work, I'd expect that one or more users would have changed the overall
approach for their particular system...but none of them have done that.

I don't know how well it will port to web development. For one thing, the
screens are quite dense compared to the web screens I've seen to date and I
don't know of XML will flow fast enough over the web to populate all those
fields. For another, there are a lot of dropdown controls - each of whose row
source has TB populated.

Like I said, I haven't actually *developed* anything web-based...I'm just
groping around for strategies that work.
 
B

brucie

In alt.html (Pete Cresswell) said:
There's nothing to re-design.

rf is right. it does need redesigning.
I'm just a desktop/database application developer trying to get
oriented in the Web world.

desktop does not translate well to web.
I don't know how well it will port to web development.

it wont. you need to redesign the UI and especially KISS
 
R

rf

(Pete Cresswell) said:
There's nothing to re-design. I'm just a desktop/database application developer
trying to get oriented in the Web world.

[design philosophy]
I don't know how well it will port to web development. For one thing, the
screens are quite dense compared to the web screens I've seen to date and I
don't know of XML will flow fast enough over the web to populate all those
fields. For another, there are a lot of dropdown controls - each of whose row
source has TB populated.

Like I said, I haven't actually *developed* anything web-based...I'm just
groping around for strategies that work.

Hmmm. Tricky.

The first thing to consider is the environment in which you are designing.

Desktop stuff is real time. The database is always open and available. You
can query or update the database at will, at any time.

For example, when your user selects one of those projects on the left you
immediately query the database to fill in all the other boxes, without
changing screens. Indeed that single screen "is" the application. There is
no concept of "changing screens".

The web is different. It is a transaction based system. Your client
application (the web page) is *not* connected to the database. You query
and/or update the database with a "transaction". This is simply a form that
gets posted to the server, after having been filled in by the user. The
server side process actions the contents of the form and posts back a new
page with the results of that transaction. This may be simply a confirmation
or report or it may be a further form containing more "data entry" stuff.

You would not, for example, update the database as soon as the user chose a
different priority from that dropdown box. You would wait until the user has
entered all the data and made all the choices, right across the form. Only
when the user presses the "submit" button do you action anything. Notice
your current application does not have a submit button. It does not need
one. A web page *does* need one.

So, your application is no longer that single screen and a real time
interaction to the database. It is now a large collection of different
screens, each one in charge of a transaction that queries/updates a small
part of the database.

You may be surprised to learn that until recently most large mainframe based
systems (the one in your bank) worked this way (I know, I used to program
them).

The user (teller) sat at a dumb terminal looking at a form. When you front
up to make a withdrawal they type in your account number and transaction it
off the mainframe. The mainframe responds with a data entry form, pre-filled
in with your account details. Having ascertained that the new form mentions
a *Mr* Cresswell and you are, indeed, male the teller fills in the details
and transactions the information back to the mainframe. The mainframe
digests this and posts a form back to the teller authorising your
withdrawal.

If you grasp this concept you will see that merely duplicating what you
currently have would be a very difficult task. Sure, you could just put a
submit button on that form and have the server bounce the same form back but
it would be an horrendously big server side process to determine what had
been changed and how to update all of the other relevant bits. What happens,
for example, if I change the priority and *in the same transaction* select a
different project. Messy :)

The better approach is to use a hierarchy, or a tree structure. Your opening
page selects a project and that is all. You drill down to parts of the
project, like "the description part" or the "status" part or the
"participants" part. Each of these parts is a different form or, in web
terms, page. When you want to change projects you back up (yes, possibly
using the browsers back button) to the opening page. It's a different
paradigm to the normal desktop application you have now.

There is of course an exception to this. If you have a controlled
environment (read Microsoft, IIS and all that stuff) then you could explore
..NET. This is designed for this sort of stuff. With .NET (AFAIK I have never
done one, just read about it) the client becomes smart. The client *can*
query the server side database. In fact .NET sort of welds the server and
the client together. This is of course not "web" but "web application".
There are usually no browsers involved. It works sort of like Outlook
operating in server mode. The client (outlook) presents the email to the
user. The email is actually stored on the remote Outlook server.

Big can or worms though. Not a trivial exercise.

HTH
 
R

rf

brucie wrote
In alt.html rf said:


i would recommend http://curl.com/ and just stuff anyone who didn't want
to download the plugin.

emmachisitt?

I went to their download page but they don't tell me.

However, get this: There is a form there with dropdowns for country and
state. Thinks, I'll bet they only list US states :)

Not so. If I select Canada I see the *provinces*.

But if I select Australia there is nothing in the state dropdown. There is
no way for me to enter a state if I am outside North America.

As to the validation - there is none. They don't even validate the
"required" field, the email address. Not client side. Not server side. Just
launches the download :)

Typical misguided form development.
 
P

(Pete Cresswell)

rf said:
Desktop stuff is real time. The database is always open and available. You
can query or update the database at will, at any time.

For example, when your user selects one of those projects on the left you
immediately query the database to fill in all the other boxes, without
changing screens. Indeed that single screen "is" the application. There is
no concept of "changing screens".

In most of my apps (that one included) I cache everything in C:\Temp. User
logs on, first thing I do is download all the combo box stuff into a faux
database in C:\Temp.

You would not, for example, update the database as soon as the user chose a
different priority from that dropdown box. You would wait until the user has
entered all the data and made all the choices, right across the form. Only
when the user presses the "submit" button do you action anything. Notice
your current application does not have a submit button. It does not need
one. A web page *does* need one.

That's essentially how that app works. As the user walks the list, we download
the current record's info into that faux database in C:\Temp. If they walk the
list really fast, the current record doesn't get downloaded until they stop
walking.

There's an "Edit" button visible in Browse mode. When that button is clicked,
the screen's fields become editable and the "Edit" button's caption changes to
"Save" - which seems TB the functional equivalent of "submit". In addition,
"Save" is disabled/greyed out until the user types into a field.

The "Close" button also morphs at that time - into "Cancel". Until the user
clicks "Save", they are editing local data. When "Save" is clicked, I
generally just do a total replacement of all values in the parent table's record
(i.e. whether a field is dirty or not...just replace what's there with what was
on the screen).

For child records, I typically maintain an "IsDirty" switche for each child
table that gets set as soon as the user makes a keystroke into a record for that
table. Most of the time for child records if even one field in one record is
changed, I just blow all the child records for that item/table up to the server
and feed them to a stored procedure that, within a transaction, blows away all
the existing records for that item/table and adds what came from the user. For
high-activity situations - where that strategy might grow the DB too much too
fast, I'll go the extra mile and match on a record-by-record basis on the server
side, updating only records that have changed, deleting records that don't exist
anymore, and adding new records.

If you grasp this concept you will see that merely duplicating what you
currently have would be a very difficult task.

In spite of my intuitive feelings to the contrary, I've had two experiences in
support of that statement.

One was a charitable endowment system that I put up for a total bottom-line cost
of less than $75,000. After a few years the company's IT division elected to
rewrite the app from the bottom up as web-centric.

The user liked the UI they had and didn't really want the rewrite - so they
insisted on an almost-identical UI.

When it was all over, IT had spent a little over 3 million dollars trying to
replicate that UI. Not only that, but after some months, the user elected to
abandon the rewritten system because of excessive bugginess....and hire yet
another contractor (this time a team of about 20 people) to do a second rewrite.

So: this would support your observation that desktop apps do not port well.

The better approach is to use a hierarchy, or a tree structure. Your opening
page selects a project and that is all. You drill down to parts of the
project, like "the description part" or the "status" part or the
"participants" part. Each of these parts is a different form or, in web
terms, page.

Sounds like a tabbed screen, just arranged vertically instead of
horizontally...? I've done trees for some situations, but what I like about
tabs is the availability of accelerator keys. Personally, I think there are
"mouse people" and "keyboard people" - and try to make each screen support both.

When you want to change projects you back up (yes, possibly
using the browsers back button) to the opening page. It's a different
paradigm to the normal desktop application you have now.

This seems TB the heart of my problem. I want to show the user as much stuff
as possible at any given time, but it seems like the environment mitigates
against that.

There is of course an exception to this. If you have a controlled
environment (read Microsoft, IIS and all that stuff) then you could explore
.NET. This is designed for this sort of stuff. With .NET (AFAIK I have never
done one, just read about it) the client becomes smart. The client *can*
query the server side database. In fact .NET sort of welds the server and
the client together. This is of course not "web" but "web application".
There are usually no browsers involved. It works sort of like Outlook
operating in server mode. The client (outlook) presents the email to the
user. The email is actually stored on the remote Outlook server
Big can or worms though. Not a trivial exercise.

Remember I said *two* experiences (above)? The second was a bond trading
system that I developed over a period of about five years (a
KISS-with-a-vengence Release 1 delivered in a matter of months, incremental
add-ons thereafter). My total billed hours over the entire five-year period
totalled less than $225,000.

Again, the company's IT decided to rewrite the app over the user's objections.
Some of this was due to the Enron scandals - my system only served one trading
desk and each of the other desks had their own system - or lack thereof.
Management wanted a single system to span all desks so they could better keep an
eye on things.

..NET was the chosen development tool.

That was several years ago. I just finished a 1-year gig with that company as
the subject matter expert on the old system. To date, IT has spent *over* 22
million dollars on the rewrite. Release 1.0 should be delivered in the near
future. The CEO of the whole company now reviews the project's progress on a
regular basis and a few people's careers at the company have gone down the
toilet over this thing.



The world seems to be moving (has moved, actually...) beyond desktop to
web-centric...to the point now where I think a lot of prospective clients just
*assume* that their app will be runable over the web.

On my agenda (somewhere below finding my next gig) is a few months of climbing
the .NET learning curve to a point where I can try to create a RAD template that
will let me put up a simple app (say a parent table, three child tables, dozen
AVT/lookup tables, and a dozen reports) in something less that three times the
manhours it takes me using my current chosen development tool.

Everything I've heard so far, however, seems to make that goal sound less and
less realistic.

With that in mind, I'm thinking maybe PHP and SqlAnywhere are something I should
learn at least enough about to put up a simple application in a RAD timeframe.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top