DOMLib: tiny cross-UA DHTML API provides compatibility with W3C DOM

from: http://www.webreference.com/new/010531.html#interview

the end of interview signified by three dashes, a space and the text string
"End of
Interview" (without the quotes) -- more information/resources on DOMLib
is/are
included following the text of the interview, which i thought sufficiently
on
topic for the UA WG to quote in full...  (this was supposed to go out to the
list back in june, but apparently didn't)

--- Beginning of Interview
WEBREFERENCE UPDATE NEWSLETTER, May 31, 2001

This week we interview Pascal Bestebroer, author of DOMLib, a
tiny cross-browser DHTML API for DOM compatible browsers.
[snip]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. INTERVIEW: DOMLib's Pascal Bestebroer

First reported in the JavaScript.com newsletter this week we
expand our interview with DOMLib's author, Pascal Bestebroer.

DOMLib is a new cross-browser DHTML library written for DOM
compatible browsers (including IE5+, NS6+, etc.). DOMLib was
developed by Pascal Bestebroer, who previously helped develop
DynAPI2. DOMLib is a very compact API containing roughly the same
functionality as found in the DynaCore/DynAPI2 libraries. The
core library weighs in at a mere 3Kb.

DOMLib is part of a trend we're seeing towards sleeker, more
standards-compliant pages designed for newer browsers like IE5
and NS6. Combined with CSS, DOMLib can help you create compelling
layouts with interactivity, using less code. We caught up with
Pascal and asked him about his new DHTML API.

>WR: Tell us about DOMLib?

PB: DOMLib is my attempt at a lightweight slick DHTML API
supporting only the W3C DOM standards (and some of Microsoft's :)
It will be different from DynAPI2 in a few ways, especially
widgets (buttons, toolbars, etc.) will be done differently because
DOM is much more flexible, and you have the power of CSS. They
will be smaller, and should provide roughly the same functionality
and ease of use.

>WR: Why did you decide to develop DOMLib?

PB: I started working on new DynAPI code for DOM compatibility...
but while trying things I figured that I could do a DOM library
using only a few lines of code, but providing almost the same
functionality as the DynAPI2 (using much more code and memory).
So I started from scratch and DOMLib is the result (but don't get
me wrong, if you need full cross-browser compatibility and power
for older generation browsers as well... DynAPI2 is still the
best thing out there so use it... DOMLib will only support DOM
and IE5+ compatible browsers).

>WR: What can you do with DOMLib?

PB: Basically you can do Dynamic HTML with more ease for DOM
compatible browsers. I'm just not a Flash addict and hate the idea
of Flash plugins for animation and stuff. For me DHTML is more
"real" and so DOMLib should be providing Web designers with the
power to do great animations without Flash.

Scripting for DOM browsers isn't really hard to do, and could
probably be done without a library such as DOMLib, but DOMLib
makes it easier to do certain things on the fly, and for
developers it's usually easier to use a library that fixes small
bugs and incompatibilities automatically.

>WR: More specifically?

PB: Basically any widgets you can think of are possible, and they
are very easy to create. A button could be done using style sheets
on a single layer (as shown in one of the exmples), but also
people should keep in mind that the components to create forms are
already available... you can change the look of a form component
(inputbox, listboxes, etc) using style sheets. You can specify
borders, colors, size, position of every form component, so no
need to create widgets for them.

Hierarchical menus are also possible, but to be honest these
"simple" things can be done even without the DOMLib. On my website
I use a toolbar that is created using a document.write statement.
The toolbar is created using a single string where I add the menu
structures to. I use some div's, tables and a lot of style sheets
to make the menu work. The menu could be (and will eventually be)
extended to have submenus, but the idea of submenus is the same
as normal menus: create the string, add it to the main string, and
document write the menu with a single document.write() call.

I think that you'll only need the DOMLib if you want to do more
advanced stuff, like games, weird animations and bigger widgets.
My best example would be the realtime 3D example on my website.
It shows that things like 3D rotations can be done, it uses dynamc-
realtime scaling of images (images are 64x64 pixels in size, and
are scaled according to their distance) and realtime 3D
calculations. Developers should start using their imagination to
create things that others haven't done yet, and use my DOMLib in
the process :)

>WR: What specific browsers/platforms does it support?

It should support all 100% DOM compatible browsers. But sadly I
can only test code on IE5/IE5.5, Mozilla (always latest release)
and Opera on Windows machines.  Luckily if things work under
Mozilla under Windows, it should work under Linux and all other
platforms Mozilla runs on. Of course help for fixing bugs on other
platforms is always appreciated (hint, hint :) [Ed: His front page
menus work on IE5/NS6 Mac.]

>WR: How well do each of the v5+ browsers support the DOM?

PB: I think the best one is Mozilla, even though I think the
browser is bloated (as the previous Netscape versions were) it's
shaping up to be a very impressive browser, handling most of the
stuff the W3C DOM needs. Internet Explorer 5+ is a great browser
as well, but not 100% compliant with standards. Not sure if this
is a bad thing though, Microsoft has put a lot of nice extras into
the browser (I think the transparency filter was copied by Mozilla
because of the coolness of it :). You can clearly see that
Microsoft's browser is getting to the DOM standard, but contains
extra features that are very useful for Web applications.

And finally Opera, this browser could be the best: it's fast, small,
renders almost perfect, works on many different platforms... but
doesn't do dynamic stuff (yet). You can't create HTML elements on
the fly or change style sheets of HTML elements. This is just a
very big problem when you want to do DHTML. I truly hope that
Opera makes those things a priority, because that could make Opera
one of Microsoft's biggest nightmares (I'm dreaming, I know :)

>WR: Even with newer browsers supporting the DOM to varying degrees,
     how do you resolve the differences between them? (box models,
     etc.)

PB: Sadly the only browser I have problems with is Opera, I just
can't work around the limitations. The other browsers I tried
haven't thrown any problems. Usually I just try the code in a
browser, and try to track down the few lines that make things go
wrong (using many alerts and browser-reloads to check variables
and values). Then if, for example, the browser doesn't handle a
certain stylesheet property, I use a small piece of code to
display all the properties available in the element.

For example:

   tmp=''
   for (var i in window.document) tmp+=i+' |  '
   alert(tmp)

That will show all available properties in the window.document
object, and that way you can check if a certain property might
have another name, or is placed under another child [object]...
and then it's just a lot of testing and trying... damn I love
developing :)

>WR: What are your future plans for DOMLib?

PB: I think the most important thing for a DHTML library is
animation, and that's probably what I will be focusing on. This
means having some sort of timeline editor to do smooth animations
of multiple layers at key-frame intervals. There's already some
basic code in the current release, but I'm working on some ideas
to make it more powerful and still easy to use. Thinking about
things like timing and triggering of animations... not sure yet
how to do it all, but I'm pretty sure it's possible.

http://www.dynamic-core.net/
--- End of Interview

in following up, at http://www.dynamic-core.net/ , i found the
following:

quote
I plugged the small memory leaks that happened in IE, always thought
it was just the browser it self.. but it seems that if you have
javascript variables pointing to DOM elements, these
variables/elements are not freed. Now there's an onunload handler in
the DOMLib that makes sure all created DomElements are disconnected
from the real DOM elements, so no more memory leaks.
unquote

and

quote
I started doing a simplistic Animation manager, see example for this.
It's actually already very powerfull, you specify the x and y speed
values and how many frames it should repeat that speed and then
optionally provide a function that should be executed at the end of
those frames. All it needs now is a timeline editor :)
unquote

which is interesting information, but quite strangely presented (at
least, that was this user's experience) -- the interface of the
dynacore site, when entered from the top level is confusing enough
to shake one's (ok, my) confidence, but then, i wouldn't expect
anyone to follow any of the links in my sig files after actually
reading one of my posts to the bitter end, either...

in any event, i've posted this to the list because i'm not well versed
enough with the practicalities of the DOM to evaluate DOMLib -- i only know
the DOM on a theoretical level, never having programmed to it, and in any
event, i'm not currently in a position to do so anyway, given the
infrastructural instability...  however, it struck me that, even if DOMLib
doesn't really have any direct bearing on what UAAG is attempting to
facillitate, then, at the very least, its changelog, release notes, and
examples will probably be of great utility to anyone attempting to interface
with the W3C DOM, especially as it claims to be able to interface with IE's
proprietary DOM as if it were W3C compliant, which would be one means of
enabling AT vendors to develop to a single spec -- the W3C DOM, without
compromising functionality/compatibility with IE...

DOMLib has a homepage, which is:
http://www.dynamic-core.net/tools/domlib/index.htm

a more formal (and actually quite nicely organized & executed)
introduction, as well as documentation, release notes, etc. begins
with:
http://www.dynamic-core.net/tools/domlib/domlib/index.htm

gregory.

Received on Thursday, 26 July 2001 16:00:08 UTC