6

I'm replacing the interface of an old Visual FoxPro system my company has been using for the past 15 years. If there's one thing that users have been complaining about is that it is tedious.

So ease of use is what's driving my philosophy in the rebuild. As you can see from my mock-up I'm thinking of a left column containing several tabs with (ultimately) real-time queues/lists in each one. Clicking on an item in any of the queues would generate a slide-out menu with links to all related functions. These would include detail views, reports, and really large forms. I would really like all thatto show up on the right-hand side while keeping the left column static and in view all the time. My first thought is to use frames but that's something we avoid these days. Is this a valid case for frames or is there a better option?

my layout mock-up

  • 1
    Can't you use a div tag with a class= or id= and set the content using JavaScript? It has been a fairly long time since I have done this kind of coding. That is what is coming to mind at the moment. – closetnoc Apr 26 '16 at 16:48
  • Do users need to bookmark or share links to specific content? – Stephen Ostermiller Apr 26 '16 at 16:58
  • @closetnoc - I certainly could use a div and populate it with content but we're talking about an inordinate amount of pages and the forms can potentially have nearly a hundred fields each. I can't fathom the JS it would take to pull that off. – Rick R Apr 26 '16 at 17:40
  • @StephenOstermiller - No sir. No bookmarks or link sharing needed. – Rick R Apr 26 '16 at 17:42
  • 1
    Okay. I think I get it now. Perhaps an iFrame would be easier? I will leave it to the experts. Cheers!! – closetnoc Apr 26 '16 at 17:44
0

Clicking on an item in any of the queues would generate a slide-out menu with links to all related functions.

If you used frames you wouldn't be able to create the "slide-out menu". The slide-out menu looks as if it would need to appear in the "other" frame, which would be exceedingly difficult to do, especially to be associated with the clicked item (on the left).

Alternatively, this "secondary menu" could appear beneath the item just clicked (ie. in the same frame).

Other considerations with using frames (although the first two may not apply here):

  • Indexing is very problematic. An "inhouse tool" obviously won't need indexing in the public domain. However, an "inhouse" index might still apply.

  • Bookmarking/sharing links is not possible. This could be implemented as an additional (permalink) feature, but adds unnecessary complexity.

  • Difficult/impossible to create a "responsive" design if this tool is to be used on multiple platforms.

  • Frames (ie. <frameset> tag etc.) are "entirely obsolete" in HTML5. So you would need to fallback to an HTML4 DOCTYPE in the index document if you want to be compliant.

But otherwise I think this could still work as an "inhouse tool".


I certainly could use a div and populate it with content but we're talking about an inordinate amount of pages and the forms can potentially have nearly a hundred fields each. I can't fathom the JS it would take to pull that off.

UPDATE: I think closetnoc's suggestion is quite a reasonable one. I don't think it would necessarily involve much more work than using frames (but maybe I'm over simplifying your problem).

With frames, the user makes a selection in the left frame which requests a document from the server to populate the right frame.

Without frames, the user makes a selection in the left container which triggers an AJAX request for a document from the server (possibly the same document that would be used with a frame, less the "page wrapper" ie. <head> and <body> tags) and this is then applied to the innerHTML of the right containing element. An oversimplification perhaps.

This approach would be problematic if these "documents" currently depend on their own unique stylesheets. Although HTML5 does offer the scoped attribute for sandboxing CSS - which could get around this - but AFAIK is only supported by Firefox at the current time.

  • You make a good point with the menu. It's proving to be problematic. I was thinking I could put the bulk of this on a standard page and the part I needed framed just in an Iframe. My menu will probably still have trouble. Thank you for all of your insight. – Rick R May 3 '16 at 18:15
  • I don't think an IFRAME offers any benefit over a standard FRAME in this respect. I've updated my answer with a bit of "discussion" about using DIVs/JavaScript. – MrWhite May 3 '16 at 18:46
  • Ohhhh I had no idea loading a page into a div was even a thing! Never crossed my path or my mind! Thank you! Reading back through the responses I see what @closetnoc was trying to say now. – Rick R May 5 '16 at 15:32
0

The use of frames is in the process of being phased out and there is a wide disparity between browsers on how frames are handled and displayed. You can achieve effectively the same with a more user friendly and sustainable by using AJAX and an empty DIV. Each one of the sub pages would be its own page anyway but rather than using a frame to access it you request it using AJAX and paste it into the empty div. This allows you to use a rotator icon to indicate that it is working (something very very hard with frames), allows you to work with the content from the sub page in a more friendly and interactive way, in addition there are a huge number of frameworks out there to make the job easier.

  • Thank you PlanetScale Networks. That's what @w3dk mentioned above. All this time I had no idea anyone was doing anything of that sort. Can't wait to try it out. – Rick R May 10 '16 at 15:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.