Ajax makes for better, more usable, more interactive UIs
Interaction can be designed
JavaScript is a bit of a dirty word for many people, because of the useless fluff (and required code forking) of old-school JS
However – CSS & valid HTML are a whole new world
JS is a tool – not for evil. It’s notDHTML, with all the browser-specificity that implies.
Make the web work better
CSS - separation of structure & presentation. Not until the CSS Zen Garden was the concept properly articulated
Different design – unchanging base. This is incredibly powerful. Sites (should) still work without CSS - and this concept is mostly taken for granted now (or is it? there are loads of rubbish presentationally-marked-up sites out there still). Is the message getting through.
E.g. S5 – just plain HTML, plus a layer of CSS (presentation), plus DOM Scripting (behaviour/interactivity). The result: PowerPoint (!).
The behaviour layer: control users’ interactions. No longer limited by the way browser makers have made browsers work.
No page refreshes – no more long waits for servers to return the same page with a bit of an update
Fade in/out notes to alert users of changes (Yellow Fade Technique)
Buy a book! Jeremy Keith’s or Stuart’s (got this one already).
Scripting: should be unobtrusive.
* Layer the interactivity over a solid base. If the base is solid and well-structured, then the data can be used in ways other than the site’s own UI.
* Gmail is a good example of what not to do: the Ajax and plain HTML versions are separate, rather than one being an enhancement of the other. It does have an open API though.
* Amazon recommendations page is better: it works without scripting, but you get extra whizzy stuff (rating of products) if you have scripting turned on. This is a feature that wouldn’t be practical or usable without Ajax.
* The little touches turn the good into the great: this is as true of interaction design as of visual design.
* Design how you want the web to work
* The universality of the web got the web off the ground in 95 onwards. Jakob alert you can do things that are outside what’s “normal”…
* Build your scripts unobstrusively. Don’t mix script and HTML. No inline event handlers etc etc, certainly no href=”javascript:” !!
* CSS is easier – the browser hooks the style to the page for you
* Scripting is harder – you have to do the hooking yourself.
* JS is event-driven
* Need to register your actions with an event
* Good scripting is unobtrusive
* What can we do? Anything you can inagine in HTML!
* Rewrite the HTML as you see fit.
* DOM+Ajax – no more waiting!
* In a survey, people thought that the web=”click a button, wait 10 seconds”
* It doesn’t have to be this way
Use other people’s code
* E.g. sortable table column headers – this is something the client can do, and should do. You already have the data, you’re only changing its presentation.
* E.g. Real-time comment previews on blogs. (*commenting on articles!*). Saves the submit/wait.
* Disable submit buttons on click – saves double submissions.
* These are good, useful enhancements, not fluff! The small things that turn the good into the great…
* “You don’t have to write GMail”
Evolution, not Revolution
* Make the existing web better
* Don’t rewrite everything from scratch
* The web’s best days are ahead, not behind
* Go and make a difference – we’re at the forefront
* “Change the web, change the world”.
Audience question
* Inline scripting still necessary on image-heavy pages if you want to do stuff before all the images have loaded. DOMContentLoaded event is in Gecko, not in IE, but Dean Edward’s IE7 code may implement this.