DHTML Utopia: Modern Web Design Using JavaScript & DOM by Stuart contributes to Stylish Scripting: SitePoint’s DHTML and CSS Blog. About The. DHTML Utopia: Modern Web Design Using JavaScript & DOM explores the Document Object Model, remote scripting, Ajax, XML-RPC and. What do Flickr, Google Suggest, Google Maps, and GMail have in common? They all take great advantage of some of the latest modern, unobtrusive DHTML .

Author: Yozshujas Kazimuro
Country: Syria
Language: English (Spanish)
Genre: Career
Published (Last): 4 October 2010
Pages: 297
PDF File Size: 20.34 Mb
ePub File Size: 10.85 Mb
ISBN: 453-1-99965-411-8
Downloads: 65849
Price: Free* [*Free Regsitration Required]
Uploader: Megul

Any hope of your being able to control the appearance and functionality of your pages across browsers goes right out the window unless you do this right. Keeping your HTML valid avoids all these problems. A given event source can be relevant to more than one event listener. Of course I immediately had to learn how to do it.

Sticking to valid HTML means that any problems you find are deemed to be bugs in that browser — bugs that you may be able to work around. The above code iterates through the retrieved list of tags in standard JavaScript fashion. This can be a pain, especially since the most commonly used browser in the world, Internet Explorer for Windows, has some serious holes in its CSS support; however, this “solution” is often a necessary compromise. If it does, then it and its corresponding window.

This is where things get a little complicated. Our code will set up listeners only on browsers that do support those methods.

Each browser provides a window. Thus, using valid HTML gives you more time to spend with your family, play snooker, etc. When we test the Function object instead, we’re assessing it for existence.

Modern Web Design Using JavaScript & DOM

Having to create a whole dhmtl of new elements and text nodes — appending the text nodes to their elements, the elements to each other, and the top element to the page — is something of a laborious process. So, to hide an element from display, we can set utopai display property to none:. In such cases, the browser gets it wrong.


We want the bottom-right corner of the big image to move only as far as the bottom-right corner of the viewing area, and not move any further towards the top-left.

DHTML Utopia: Modern Web Design Using JavaScript & DOM – SitePoint Premium

This is not how it was meant to be The addListeners function takes this opportunity to assign listeners to elements as required. The most important page creation step is to check that your HTML is valid. Not so here, as the text is kept refreshingly free of unending details about tuopia browser implementations of DOM methods, instead simply guiding you in the right direction of code branching and feature testing so your code will work as well as possible in each browser.

In addition to its validity, your HTML should be semantic, not presentational. Consider this HTML snippet:. Clicking any link will open that link in a new window if the box is checked. The DOM specifications enlarge the idea of event handlers by providing event targets and event listeners. Here are the six items in all their detail. There was little ddhtml for cross-browser compatibility, although Microsoft copied and supported most of the early innovations made by Netscape.

While it can be a lot of work, many CSS bugs only become apparent with the complex use of this technology; most CSS is handled perfectly across platforms and browsers without the need for hacks or complex tests.

The text of the link, which read “SitePoint” before, has not changed; if we need to alter that, we have to do so separately. We add our mouseover and mouseout event listeners using the standard approach. If we move the cursor to the extreme bottom-right of the viewing area, we want the big image to move by almost its entire size — but not quite! Note the location of the cursor. Unfortunately, there is simply no better way around the problem in Safari.

DHTML Utopia: Modern Web Design Using JavaScript and DOM

In JavaScript, everything can be treated as an object if you try hard enough; methods are no exception! JavaScript allows you to collapse expressions together like this. The last section of our code has little to do with browser detects, but, having spent all this time to get the right X and Y coordinates, it makes sense to understand how to use them.

  B1520 PRO PDF

Where do events come from in the first place? The thumbnail display implemented by the scrollImage example. For example, to prevent the click event of a link from navigating to the target of the link, we would normally just use an event listener that prevented the default action of the link:. We could implement this functionality using a combination of event listeners: As a result, event listeners will only be assigned once the document has finished loading, and all elements are available.

In many cases, the disparities in browser support can be worked around, but fundamentally, a page should never rely on a DHTML effect being possible, but use DHTML to enhance the usability of a page for those with capable browsers i.

This represents a more systematic approach than the old-fashioned use of onmouseover and onmouseout attributes, and keeps rollover code separate from other content. Netscape also provides pageX htopia pageY, which are mouse coordinates relative to the document. There is a way around this issue, which, though it makes the code significantly more complex, does avoid this problem; details can be found in this Stylish Scripting blog post ; utooia include it in your code, then use it to attach events.

As always, you can download this excerpt as a PDF if you prefer.

DHTML Utopia: Modern Web Design Using JavaScript & DOM

This demonstration concludes our experimentation with this particular bit of code. The mouseover and mouseout functions do little other than the actual image swapping work.

But how do you make your code run in response to those events? Naturally, making events work cross-browser is not as easy as just following the DOM standard. Depending on your browser of choice, this might seem to work just fine at first glance.

The DOM standards specify a document.