Preface
1. Hello JavaScript!
Hello World!
Hello World! Once Again
The script Tag
JavaScript Versus ECMAScript Versus JScript
Defining Functions in JavaScript
Event Handlers
The document Browser Object
The property Operator
The var Keyword and Scope
Statements
Comments
What You Didn't See: HTML Comments and CDATA Sections.
JavaScript Files
Accessibility and JavaScript Best Practices
Accessibility Guidelines
noscript
2. JavaScript Data Types and Variables
Identifying Variables
Naming Guidelines
Primitive Types
The String Data Type
String Escape Sequences
String Encoding
Converting to Strings
The Boolean Data Type
The Number Data Type
The null and undefined Variables
Constants: Named but Not Variables
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
3. Operat0rs and Statements
The Format of a JavaScript Statement
The Assignment Statement
The Arithmetic Operators
The Unary Operators
Operator Precedence
A Handy Shortcut: Assignment with Operation
The Bitwise Operators
Conditional Statements and Program Flow
The if...else Conditional Statement
The switch Conditional Statement
The Conditional Operators
The Equality and Identity (String Equality) Operators
Other Relational Operators
The One and Only JavaScript Ternary Operator
The Logical Operators
Advanced Statements: The Loops
The while Loop
The do...while Loop
The for Loops
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
4. The JavaScript Objects
Primitive Data Types As Objects
Boolean, Number, and String
The Boolean Object
The Number Object, Static Properties, and Instance Methods
The String Object
Regular Expressions and RegExp
The RegExp Methods: test and exec
Working with Regular Expressions
The Date Object
The Math Object
The Math Properties
The Math Methods
JavaScript Arrays
FIFO Queues
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
5. Functions
Declarative Functions
Function Naming Conventions and Size
Function Returns and Arguments
Anonymous Functions
Function Literals
Functions and Recursion
Nested Functions, Function Closure, and Memory Leaks
Callback Functions
Function Type Summary
Function Scope
Function As Object
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
6. Troubleshooting, Debugging, and Cross-Browser Issues
Simple Ways to Debug
Development and Debugging Tools by Browser
Firefox and Firebug
Using console.log
Firefox, the Web Developer Toolkit, and NoScript
Opera and Dragonfly
Safari/WebKit and the Web Inspector
Internet Explorer
Dealing with Cross-Browser Differences
Object Detection
Where Object Detection Fails
DOCTYPE, X-UA-Compatible, and Quirks Mode
Breaking Backward Compatibility: The IE8 http-equiv Meta Tag
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
7. Catching Events
The Events
Level 0 Event Handling
The Event Object
Event Bubbling
Event Handlers and this
The DOM Level 2 Event Model
Generating Events
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
8. Forms, Form Events, and Validation
Attaching Events to Forms: Different Approaches
Cross-Browser Event Handling
Canceling an Event
Selection
Dynamically Modifying the Selection
Selection and Auto-Selection
Radio Buttons and Checkboxes
The text, textarea, password, and hidden Input Elements
Text Validation
Input Fields and Regular Expression Validation
Forms, the Sandbox, and XSS
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
9. Browser As Puzzle Box
The Structure of the Browser at a Glance
The window Object
Creating and Controlling Windows
The Dialogs: alert, confirm, and prompt
Creating Custom Windows
Modifying a Window
Frames
The location Object
Remote Scripting with the iframe
Adding and Controlling Timers
The history, screen, and navigator Objects
The history Object
The screen Object
The navigator Object
The history, screen, and navigator Properties in Action
The Document Object
Links
Images
innerHTML
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
10. Cookies and Other Client-Side Storage Techniques
The JavaScript Sandbox and Cookie Security
The Same-Origin Security Policy
Using document.domain
All About Cookies
Storing and Reading Cookies
Flash Shared Objects, Google Gears, and HTML5 DOM Storage
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
11. The DOM, or Web Page As Tree
A Tale of Two Interfaces
The DOM HTML API
The DOM HTML Objects and Their Properties
DOM (HTML) Collections
Understanding the DOM: The Core API
The DOM Tree
Node Properties and Methods
The DOM Core Document Object
Element and Access in Context
Modifying the Tree
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
12. Dynamic Pages
JavaScript, CSS, and the DOM
The Style Property/Attributes
Fonts and Text
Font Style Properties
Text Properties
Position and Movement
Dynamic Positioning
Drag-and-Drop
Size and Clipping
Overflow and Dynamic Content
The Clipping Rectangle
Display, Visibility, and Opacity
The Right Tool for the Right Effect
Just-in-Time Information
Revisiting the DOM: Collapsing Forms, Query Selectors, and Class Names
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
13. Creating Custom lavaScript Objects
The JavaScript Object and Prototyping
Prototyping
Creating Your Own Custom JavaScript Objects
Enter the Function
Public and Private Properties and Where this Enters the Picture
Getters and Setters
Object Encapsulation
Chaining Constructors and JavaScript Inheritance
One-Off Objects
Object Libraries: Packaging Your Objects for Reuse
Advanced Error Handling Techniques (try, throw, catch)
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
14. Moving Outside the Page with Ajax
How Ajax Works
Hello Ajax World!
The XMLHttpRequest Object and Preparing to Send the Request
Object, Object, Who Has the Object?
The XMLHttpRequest Methods
Processing the Web Request Return
Checking the readyState and status of an Ajax Request
Processing the Web Request Result
Ajax: It's Not Only Code
The Dynamic Nature of Ajax
Ajax Accessibility and Degrading Gracefully
Security and Workarounds
JavaScript and Ajax Libraries
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
15. Ajax Data: XML oriSON?
XML-Formatted Ajax Results
The Data's MIME Type
Generating the XML on the Server
Processing the XML on the Client
JavaScript Object Notation
A Simple JSON Application
The JSON Object
Test Your Knowledge: Quiz
Test Your Knowledge: Answers
Index