Dynamic HTML The Definitive Reference (2nd edition)
What's in the book?
The book is not an introduction to DHTML but it does have an 183-page section on Applying DHTML that covers not only the current state of the art but also gives clear guidance in making use of all the features. The guidance is of a good enough standard that a firm's Quality program could simply cite this book as the basis for the web development standards that a team adopts. Goodman makes it very clear that he is not going to discuss the DHTML that Navigator 4 introduced, the <layer> tag and JavaScript style rules, but points out that they are covered in the first edition should you really need to know.
The layout of the book is the same as the first edition, with the reference sections divided into HTML, DOM (Document Object Model), CSS (Cascading Style Sheet) and JavaScript. A new section for Events also makes an appearance. The reference sections on HTML and DOM have sub-sections that precede them on the shared attributes of all elements. These are particularly useful and I think should be committed to memory.
There is also a very curious Cross Reference section that has an HTML/XHTML attribute index and a DOM property, method and event handler index. It takes each HTML/XHTML attribute and shows which elements support it and then each DOM scriptable object property, method and event and which objects support it. I'll confess I've never had any call to use this section but I can see how it could come in handy -- and it hardly takes up much dead tree.
The upper limit of standards coverage is HTML 4.01, XHTML 1.1, CSS Level 2, DOM Level 2, and JavaScript (or ECMAScript) 1.5. The browsers considered are IE6 (Windows), IE 5.1 (Mac), Netscape Navigator 6 and 7 and Mozilla 1.0. Opera is also mentioned in the section on Applying DHTML in that it mostly follows the IE DOM. The timeline for any element can go back as far as HTML 3.2, Navigator 2 or IE 3.
As you would expect, there are some useful appendices: Color Names and RGB Values, which I expect to be using more now as sites are required to meet Accessibility guidelines; HTML Character Entities, for when you don't have a copy of Macromedia Dreamweaver or when your favourite HTML editor doesn't have a complete list; Keyboard Event Character Values, for your scripts when you want to catch all those key presses; Internet Explorer Commands, which along with the MSHTML.dll can allow the creation of a very neat content editor quite quickly and easily; and finally, an HTML/XHTML DTD Support cross-reference that may help catch validation errors as you move from an HTML 4.01 Transitional DTD to a full-on XHTML 1.0 Strict DTD.
What makes it worth having?The quality of Danny Goodman's writing is both technically accurate and easy to read. The clarity and lack of fluff is good, but there is no skimping on detail where such is needed to illuminate a point. Let's face it: web development is not as complex as most software engineering or systems development tasks, but it is a discipline with quite a wide base, reflected in the 1400 pages of this tome. I wouldn't trim any of it, however, and I expect that after about a year of use I will have referred to a good proportion of the contents. Take, for instance, Goodman's estimate that there are more than 15,000 unique instances of properties, methods, and event handlers supported by numerous document objects and you get an good impression of the size of the documentation required.
The book could be regarded as two books in one: There is the Applying DHTML book and the Reference book. The best things about the reference sections are the excellent descriptions, the clear little examples, and especially the quick summary of where you can expect these things to be supported. Referring to this book is the simplest way to avoid going down the proprietary browser extension cul de sac.
The Applying DHTML section is worth reading all the way through. It is great for getting yourself into the various technologies and seeing how they are meant to work. There are interesting points made on how each of the technologies are evolving. There's material contrasting the various DOM implementations and there are chapters on style sheets, positioning in CSS, making the content dynamic (of course, this is what DHTML is all about, after all) and scripting events.
There is a very useful cross-platform API for DHTML (which can be downloaded as a zip file along with the other examples from the book on O'Reilly's web site). I've used the version from the first edition quite a lot, and I've used the new version in my most recent work. It doesn't rely on browser version sniffing, but rather on object detection, which is explained with some examples, and can be easily extended to handle any DOM call you may wish to make. The API is especially useful for any CSS positioning tasks you may have. Goodman also goes over other strategies you can adopt to make your sites cross-platform, such as page branching, designing for a common denominator, and some other, neater, solutions.
There isn't anything on Accessibility other than a single paragraph drawing your attention to the Web Accessibility Initiative (WAI). DHTML and Accessibility could be considered inimical but that isn't the case and I'd perhaps have liked to see this elaborated on with some suggestions on how to achieve an Accessible site while still using DHTML. In practice, however, I've found it easy to meet the Priority 1 checkpoints (or A rating) set by the WAI even with a complete DHTML site so perhaps this is not really an issue.
I find this book really useful. I can't imagine any web developer doing without this book and managing to produce a good cross-platform solution, and I also can't imagine that developer needing any other texts on any of the technologies covered here. I certainly don't have any others on my desk today.
The O'Reilly web site has a complete Table of Contents available. You can purchase Dynamic HTML The Definitive Reference from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Used copies of first edition are pretty darned cheap.
Easy guys, I put my pants on one leg at a time. The difference is after I put on my pants I make gold records!
Nice review. I was Googling the web yesterday trying to figure out if any DHTML techniques have become standards. Can anyone point me to a site or two that answers this question? I have my heart set on not writing another line of code that won't work in one browser or another. Within reason.
I liked the 1st edition too, so I'm not suprised that the 2nd got such a rave rating, but 10? I would have liked to see more information on why it's better than the first edition. Not mentioning much in the way of accessibility is a big minus for me working on corporate sites since Section 508 compliance required.
Amazon has it cheaper ($41.97) then B&N by the way.
This book covers a huge amount of material. After all, DHTML is just a name used for the interaction of a bunch of different things, and this book seems to try to cover all of them. I wonder whether Goodman is really an expert on all of it (or whether anyone can be). I'd be a lot more comfortable trusting a book like this if it were written by a group of authors with different areas of expertise.
Looking at what I can find about the book's coverage of CSS (which I know a lot about), I'm not optimistic. He seems to make up his own terminology, which can cause significant confusion in any public discussions. He uses the word "attributes" instead of "properties" (e.g., the CSS 'position' property) in the sample chapter available at O'Reilly. This is a mistake that's become very common these days, perhaps due to earlier editions of this book, and causes lots of confusion when people really need to discuss attributes (in HTML). The table of contents also shows sections titled by terms that he seems to have made up: "Common Subgroup Selectors" and "Advanced Subgroup Selectors".
It could be that he's decided he doesn't like the terminology used by the CSS specification so he's making new terminology. Such a decision has significant costs for communication between and among web developers and standards organizations. However, I fear it may not even be a conscious decision, but rather than he just doesn't know enough about CSS to know the correct terminology. (Not that I would expect any one person to be able to learn enough about all the topics covered in this book to be an authority on all of them.)
(If you want a good book on CSS, look for Eric Meyer's books on CSS, one of which is also published by O'Reilly.)
I'm not a web developer, but I've heard that DHTML support in Mozilla is pretty bad. There are a few sites which either don't work at all in Mozilla, or have "static" versions with DHTML removed*. Some of the web developers around my office have complained about this, and cite IE's DHTML support as the best.
Is this an issue of actual support, or just "IE standards" where people don't want to use real standards, just whatever "standard" Microsoft supports?
* The site I'm thinking of is Citibank's credit card management section. here. Of course, if you don't have a card with them, you can't log in to check it out.
I'm not trying to troll here, this is an actual question because I don't know.
Is DHTML still as relevant as it used to be? Aren't people using server side scripting (perl, php, asp, etc) for truly interactive sites and things like DHTML are little more than nice HTML enhancements for doing the odd neat thing?
I just wondered what the perception was? I'm not anti-DHTML by any means, I'm just interested in where the general trend of web development is going.
Yea because they amount to what percentage of users? If you have an average of 1000 hits a month on your lowly web page, are you really going to want to support anything else, especially if you don't really have the time to install 10 different browsers.
While you're at it, you better make sure it works with Mozilla 1.0 and 1.1. You better also make sure it still works with Netscape 6 (6.x) and 7. Then how about Opera 5 and 6. Then there is also Konqueror.
So I say make sure it works under IE 5+ and then do a quick check with the Mozilla 1.0. Then later make sure it works completely with Mozilla 1.0 and Netscape 6. Then start branching out.
I use Linux and Konqueror every day. I also sometimes use Mozilla or Opera because some sites render differently or the browsers crash or hang on various web pages -- probably nsplugins shitty under *nix. But when I have to develop some web page or web application, I make sure it works with IE and do a run through with Mozilla 1.0. If I have time I start branching out.
The browser war is certainly not as bad as it once was. Increasing standards support makes it possible to design a site that uses only the subsets of CSS/HTML/whatever that all the major browsers use. You don't need to use the non-standard IE and Netscape extensions that were introduced during the browser war proper.
Corrollary: If you design a site that works only using well-documented standards, such as the W3 ones, and it works on a selection of browsers, then anything it doesn't work quite right on only needs to improve its standards support.
You obvisouly don't know what you are talking about.
Well-used Javascript and DHTML is harder to recognize than the obvious stuff you come across as popups and various ad-schemes. Apparently, you pull stats ("99.9999%") out of your ass and try to pass your opinions as facts. Are you in the industry, or is your main experience that as a surfer ?
There is tremendous power to DHTML and Javascript, and it is widely used in commercial sites. It allows the user to interact with the otherwise dead html in ways that help the user and the site.
For a great example, look at International Herald Tribune. You can select articles from the frontpage and put them in a "clippings" folder - no you don't have to login - and then you can read them all later on. No more "open in a new window". For individual articles you can select how it will presented; font size, colums per page etc. This is an example of a site that is usable and intuitive thanks to Javascript, in this case.
So, get a clue to what you are talking about.
Oh, I can't help quoting you because everything that you said rings true
Anything you can do, I can do meta.
This is the sound of someone sorting a list of items without client-side javascript...
click (wait)... click (wait)... click(wait)...
One example of thousands of times where client-side scripting is useful. Is server-side scripting more useful? Certainly. Should server-side scripting be learned first? Probably. But any web developer that isn't familiar with client-side scripting is a mediocre web developer.
Suppose you want to process keypress events in a form input, to provide a character count. You're going to bang on your server for each one? Wow, that's really really stupid.
Oh, your alternative is to provide no extra functionality like that in any of your web applications? Ok, thanks for playing, but you lose.
Your time is better spent learning PHP, Java, Python, you name it. You can't use JavaScript anywhere else.
You can use PHP for web page scripting, and not "anywhere else". What's your point?
Yes, half the slashdot population could indeed be using a browser that is not IE. However, 99% are not, so making DHTML compatible for other browsers should be the least of a web developer's concerns. Content and navigation should come first.
:)
I agree. I guess DHTML and JavaScript have excellent tools for intranets, for instance for services like accessing Novell GropWise through the web browser. I think you're right, that there are good uses for DHTML.
I don't mind useful applications, but it seems that the internet is more annoying now it was in 1996 and DHTML is one of the reasons no doubt. It does have good purposes, but no thank you 99% of the time, when I'm accessing the internet and not intranets.
Thank you to people who enlightened us all about intranet usefulness. I posted my opinion, it went to 4, Interesting, and generated a few explanations of how DHTML is useful. Now that my perspective had a counterpoint, my moderation quickly went down to zero. I ask, are we not all enlightened from the discussion that took place? How can something that entices useful information be devalued once moderators judge that a 'better' opinion appears, all stemming from this? And flamebait, of all things...
Cover your eyes and click this link!
If you want eye candy, use Flash, which does a much better job of it.
Hmm -- You sound like the guys who invented ASP.NET. Having your HREFs RUNAT="server" all the time only sounds like a good idea when you are on localhost. Now think about the CEO dialing in through your sweet 33.6Kbs RAS system from a hotel somewhere.
And don't waste time learning JavaScript! Your time is better spent learning PHP, Java, Python, you name it. You can't use JavaScript anywhere else.
Or learning PHP/Java/Python enough to dynamically generate your Javascript code/data.
Wow, well it's good to see that you're very progressive and open-minded. Why don't you try broadening your scope a bit? Sure, no one needs Java, Javascript, Flash, CSS, or DHTML to punch up a few news stories or your resume. But what about sites that let you dynamically monitor distributed processes? Or how about a little thing you've obviously never heard of called "e-commerce?" There are plenty of real, useful ways in which scripting makes things a lot easier, both for the visitor and the author.
It says a lot that you couldn't see that. Period.
Like woodworking? Build your own picture frames.
Well I used to run with all the bells and whistles enabled. Unfortunately, I stumbled across a website whose author was more interested in causing havoc on my machine than in providing content.
It's true that well-intentioned scripting features can make things easier. It's also true that, in the wrong hands, those features can cause havoc. To me, it's not worth it.
As to your last comment, E-commerce doesn't require DHTML, Flash, CSS, java or javascript. In fact, if you ever read the W3 specs, they make a point of saying that web sites shouldn't require any of those technologies to function properly. If you want animated pictures of butterfly-costumed men obscuring your screen, be my guest. Just don't insist that I watch them too.