|
Posted by Adrienne on May 29, 2005, 8:01 am
Please log in for more thread options
Gazing into my crystal ball I observed "Rob Freundlich"
> I have some servlet-generated tabular data that I need to present, so
> I'm using an HTML Table. In some cases, it can be quite large. I'm
> flushing the servlet output every N lines to push the data to the
> browser as it generates, and I've used "table-layout: fixed" for the
> table's CSS class.
>
> It works pretty well in Netscape (7.1 and higher) - the table is drawn
> pretty much as the rows are received by the browser. However, Internet
> Explorer 6.0 seems to draw the table at whim rather than as the rows
> are received. Since there may be significant chunks of time between
> whims (or worse, before the first draw), it looks like my app isn't
> responding even though it's really IE that's the holdup.
Can you break up the data a bit? Maybe page the records. Usually, when I
have a lot of data, I page at 50 records.
>
> My understanding of fixed table-layout is that it permits the browser
> to draw the rows as they're received, where auto table-layout requires
> all rows to have been received to allow column calculations. So I'm
> expecting to see the Netscape-style behavior I described above. I've
> defined a width for the table and for each column, so I'm pretty sure
> fixed layout isn't being short-circuited down to auto. I've also seen
> that in a large table, I *will* get chunks at a time, which implies IE
> isn't doing "auto" behavior.
That's IE for ya. Perhaps MS just thought no one was ever going to have a
really big table, so they aren't honoring the spec.
>
> So my assumption is that the IE code is doing a fixed layout but is
> buffering for some reason, but that's just a guess.
>
> I've distilled the situation down so that I can demonstrate it with a
> small (2-row) table:
>
> http://home.comcast.net/~rob.freundlich/css/fixedTable.html
No DOCType declaration. You might want to use that and see if IE responds
any better (I doubt it).
>
> I've injected (for debugging only - not for the final app) a javascript
> alert() between the two rows to put a pause into the rendering so that
> I can see when things are being drawn. In Netscape, when the alert
> pops up, row 1 has been drawn and is visible to the user. In IE, when
> the alert pops up, neither row has been drawn.
>
> Can anyone offer advice? I'll take CSS hacks, IE-specific JavaScript
> that will force the draw, or even sacrificial rituals (yes, I'm willing
> to dance widdershins around Redmond in the light of the full moon if
> that's what it takes!), as long as I can fix the problem for IE6.0.
The only thing I can think of is to break up the data. If you have 4
columns, 50 rows; 10 columns, 25 rows, etc. Additionally, consider the
content in the table. Are you going to have images, several lines of text
in a cell? It would probably be easier for the user as well if the records
were broken up.
If most of your visitors are using IE, then you may have to live with it.
--
Adrienne Boswell
http://www.cavalcade-of-coding.info Please respond to the group so others can share
|