<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> Untitled Document

Dynamic fantastic?

Dynamic HTML is one of those phrases that is being bandied about at the moment. New technologies for the Web seem to appear every 5 minutes and anyone involved in Web development needs to assess whether the time taken to learn a particular technology will pay dividends. Just because of its sheer size, Microsoft's products are always worth investigating, particularly if, as in the case of Dynamic HTML, the W3C consortium will ratify it. W3C is the body of people who have the unenviable job of bringing standards to the HTML language. In our book anyone who is doing anything to minimise the differences between browsers deserves a medal! Having said that, Dynamic HTML is only supported by Microsoft IE4 at the moment. Netscape are implementing it but with a difference! Rather than getting into a browser war in these pages, let's just let the two companies have their say:

Microsoft: (from their Website)

"Netscape's implementation does not support the Document Object Model, as described by the W3C Preliminary Requirements Document for the Document Object Model. As a result, Netscape Navigator exposes few page elements as objects, limiting layout and creative capabilities for authors. Page elements can be manipulated only while the page is loading, not after load time. Netscape's nonstandard implementation consists of JavaScript Accessible Style Sheets (JASS), layers and dynamic fonts (TrueDoc). These technologies are not supported in Microsoft Internet Explorer 4.0. "

Netscape: (via email)


"Yes, we do have a Document Object Model, we are working closely with the W3C in this working group and helped write the preliminary requirements doc. There are aspects that they cover right now, aspects they don't, and the same for us. There is not even a working draft specification at this time, but we do fully plan on implementing the standard DOM specificaiton once it exists.

Dave Bottoms, Client Product PR Specialist Netscape Communications Corp.
So the good news is that it looks at though we will see a version of Dynamic HTML which will be supported by both major browsers.

Is it worth the effort of learning Dynamic HTML ? Well having played (you will note we say 'played' and not 'used' as we have yet to use this for a real site - when we do we'll let you know!) with it for a while now, it is obvious that there are some very useful extensions that can be used (and are sure to be overused for a while!)

The main thing to bear in mind when evaluating Dynamic HTML commands is that these effects occur locally on your browser without another call to the server. Dynamic HTML allows many animation and graphical effects. You can, for example, have a heading showing and when you click on it the full text appearing underneath. Text and images can change when the mouse pointer goes over them or when they are clicked, all without the use of a scripting language. All objects on a page will support onmouseover, onmouseout, onmousedown, onmouseup, onmousemove,onclick, ondblclick, onkeypress, onkeydown, onkeyup events.

Pretty effects are all well and good but all these hidden objects still need to be loaded by the browser, so the pages can take longer to load than their appearance would suggest. Images can be manipulated by the browser code with tempting tags such as Shadow, Blur, Glow and Alpha Transparency. This, coupled with the ability to move and scale images on the fly, should make for a whole new generation of badly designed and distracting sites ! There is a useful new object called the data source object which, when placed on a page in much the same way as the data control in VB, enables the user to scroll through records, sort records and update them. All this is done on a locally stored copy of the data and so takes some of the load off the server. This sort of effect can be achieved with different database cursors under Active Server Pages but the data source object takes it a bit further. There are bound to be some useful implementations of this object before long. As with scripting, there are differing views as to whether this sort of data handling should be done on the client's machine, with perhaps more records being sent than the user needs, or done on the server where the server generates the HTML pages dependant on the user request. This second method puts a greater load on the server but in many cases less on the bandwidth. If used sensibly, that is by only sending small numbers of records to the data object and not your entire stock list of 1,000,000 items(!), it should become a useful tool to anyone designing Websites that talk to datasources.

A huge area of change is that of CSS or cascading style sheets. These are like the styles that you are familiar with in Word or DTP programs which give your documents some sort of coherent look and enable global changes throughout your site by simply changing one file. Within a style you can change font, colours, borders, cursor type, and, interestingly, page-break-before and page-break-after; at long last this gives us some control over how HTML pages print.

You can redefine say <H1> to be anything you like just as you can <strong>, <B> and any other tag. Just imagine what sort of damage you can do with this!

If you want to change all your headings to a different colour, then with one simple redefinition of a style all the text with that tag will change within that page. Or, if you use linked style sheets, then the change will be implemented on all the pages that use that linked style sheet.

The specification of CSS is considerable -- take a look at the SDK which is available for download at http://www.microsoft.com/msdn/sdk/inetsdk/asetup/

Style sheets will undoubtedly make the design and maintenance of larger sites easier; more importantly, they bring extra effects to basic HTML. One new feature that Web designers will all love (and probably curse at times), is absolute and relative positioning. You can now place any object at an exact position on the browser page! The code works something like this for text:

<div STYLE="position:absolute; left:150; top:25">
This is some text
</div>
and like this for images:
<IMG SRC="image.gif" STYLE="position:absolute; left:300; top:25">

Now, when the design tools allow you to drag and drop objects anywhere on a page and for them to stay there, we are finally talking about real DTP for the web, rather than the current battle to fix objects on a page with tables, invisible gifs and all the other tricks you have to develop. Front Page 98 is currently in beta and has some support for these new commands already.

It will be a while before Dynamic HTML is universally used but most of the new commands seem to fail gracefully under older browsers and so with care can be used to enhance a site for users with newer browsers whilst not excluding those with older browsers. This is an important consideration as many corporates do not allow their employees to change their browser and so some of the biggest names that your site is trying to attract may be using a fairly old version of browser. The Times the other day stated that "60% of companies with more than a thousand employees are still using Windows 3.1" so whilst we all might play with the latest toys it is worth bearing in mind that the introduction of any new technology at the client end will always have a slow uphill struggle before becoming the defacto standard, by which time there will be another 'new kid on the block'!

An IIS gotcha
We recently had a problem with a Web site which is hosted on an IIS server, and which makes heavy use of session variables to track what the user is doing. Users were reporting that the site wasn't behaving as expected, and we eventually tracked this down to the user having clicked on a certain link, and the fact the user was using Netscape. How on earth could the choice of browser have an effect on session variables (which are stored on the server)?
The answer was to do with case sensitivity when specifying the server's virtual directory in the browser URL, which is handled differently in IE and Netscape. If, for example, your site was called Fred then the URL to your root project might be http://servername/Fred/.

If you create a link to home.asp as follows:
<a href="/Fred/html/home.asp">Goto Home Page</a>
then you should have no problem getting session variables tracked properly between pages on your site. If, however, you have a link to:
<a href="/fred/html/home.asp">Goto Home Page</a>
then a new session will be created because of this case sensitivity issue (Fred vs. fred), and hence session values will seem to disappear. This is one of those mistakes which is very easy to make, and incredibly difficult to find!

Copyright 1999 ECats Ltd all rights reserved