Preface
1. The Web As Application Platform
Adding Power to Web Applications
Developing Web Applications
JavaScript's Triumph
2. The Power of JavaScript
Nonblocking I/O and Callbacks
Lambda Functions Are Powerful
Closures
Functional Programming
Prototypes and How to Expand Objects
Expanding Functions with Prototypes
Currying and Object Parameters
Array Iteration Operations
You Can Extend Objects, Too
3. Testing JavaScript Applications
QUnit
A Simple Example
Testing with QUnit
Selenium
Selenium Commands
Constructing Tests with the Selenium IDE
Automatically Running Tests
Selenese Command Programming Interface
Running QUnit from Selenium
Selenium RC and a Test Farm
4. Local Storage
The localStorage and sessionStorage Objects
Using localStorage in ExtJS
Offline Loading with a Data Store
Storing Changes for a Later Server Sync
JQuery Plug-ins
DSt
jStore
5. IndexedDB
Adding and Updating Records
Adding Indexes
Retrieving Data
Deleting Data
6. Files
Blobs
Working with Files
Uploading Files
Drag-and-Drop
Putting It All Together
Fiiesystem
7. Taking It Offline .
Introduction to the Manifest File
Structure of the Manifest File
Updates to the Manifest File
Events
Debugging Manifest Files
8. Splitting Up Work Through Web Workers
Web Worker Use Cases
Graphics
Maps
Using Web Workers
The Worker Environment
Worker Communication
Web Worker Fractal Example
Testing and Debugging Web Workers
A Pattern for Reuse of Muhithread Processing
Libraries for Web Workers
9. Web Sockets
The Web Sockets Interface
Setting Up a Web Socket
Web Socket Example
Web Socket Protocol
Ruby Event Machine
Erlang Yaws
10. New Tags
Tags for Applications
Accessibility Through WAI-ARIA
Microdata
New Form Types
Audio and Video
Canvas and SVG
Geolocation
New CSS
Appendix: JavaScript Tools You Should Know
Index