Preface
1.Strings
1.1 Concatenating (Joining) Strings
1.2 Improving String Handling Performance
1.3 Accessing Substrings
1.4 Changing String Case
1.5 Testing Equality of Two Strings
1.6 Testing String Containment Without Regular Expressions
1.7 Testing String Containment with Regular Expressions
1.8 Searching and Replacing Substrings
1.9 Using Special and Escaped Characters
1.10 Reading and Writing Strings for Cookies
1.11 Converting Between Unicode Values and String Characters
1.12 Encoding and Decoding URL Strings
1.13 Encoding and Decoding Base64 Strings
2.Numbers and Dates
2.1 Converting Between Numbers and Strings
2.2 Testing a Number's Validity
2.3 Testing Numeric Equality
2.4 Rounding Floating-Point Numbers
2.5 Formatting Numbers for Text Display
2.6 Converting Between Decimal and Hexadecimal Numbers
2.7 Generating Pseudorandom Numbers
2.8 Calculating Trigonometric Functions
2.9 Creating a Date Object
2.10 Calculating a Previous or Future Date
2.11 Calculating the Number of Days Between Two Dates
2.12 Validating a Date
3.Arrays and Objects
3.1 Creating a Simple Array
3.2 Creating a Multidimensional Array
3.3 Converting Between Arrays and Strings
3.4 Doing Something with the Items in an Array
3.5 Sorting a Simple Array
3.6 Combining Arrays
3.7 Dividing Arrays
3.8 Creating a Custom Object
3.9 Simulating a Hash Table for Fast Array Lookup
3.10 Doing Something with a Property of an Object
3.11 Sorting an Array of Objects
3.12 Customizing an Object's Prototype
3.13 Converting Arrays and Custom Objects to Strings
3.14 Using Objects to Reduce Naming Conflicts
4.Variables, Functions, and Flow Control
4.1 Creating a JavaScript Variable
4.2 Creating a Named Function
4.3 Nesting Named Functions
4.4 Creating an Anonymous Function
4.5 Delaying a Function Call
4.6 Branching Execution Based on Conditions
4.7 Handling Script Errors Gracefully
4.8 Improving Script Performance
5.Browser Feature Detection
5.1 Detecting the Browser Brand
5.2 Detecting an Early Browser Version
5.3 Detecting the Internet Explorer Version
5.4 Detecting the Mozilla Version
5.5 Detecting the Safari Version
5.6 Detecting the Opera Version
5.7 Detecting the Client Operating System
5.8 Detecting Object Support
5.9 Detecting Object Property and Method Support
5.10 Detecting W3C DOM Standard Support
5.11 Detecting the Browser Written Language
5.12 Detecting Cookie Availability
5.13 Defining Browser- or Feature-Specific Links
5.14 Testing on Multiple Browser Versions
6.Managing Browser Windows
6.1 Living with Browser Window Control Limitations
6.2 Setting the Main Window's Size
6.3 Positioning the Main Window
6.4 Maximizing the Main Window
6.5 Creating a New Window
6.6 Bringing a Window to the Front
6.7 Communicating with a New Window
6.8 Communicating Back to the Main Window
6.9 Using Internet Explorer Modal/Modeless Windows
6.10 Simulating a Cross-Browser Modal Dialog Window
6.11 Simulating a Window with Layers
7.Managing Multiple Frames
7.1 Creating a Blank Frame in a New Frameset
7.2 Changing the Content of One Frame from Another
7.3 Changing the Content of Multiple Frames at Once
7.4 Replacing a Frameset with a Single Page
7.5 Avoiding Being "Framed" by Another Site
7.6 Ensuring a Page Loads in Its Frameset
7.7 Reading a Frame's Dimensions
7.8 Resizing Frames
7.9 Setting Frameset Specifications Dynamically
8.Dynamic Forms
8.1 Auto-Focusing the First Text Field
8.2 Performing Common Text Field Validations
8.3 Preventing Form Submission upon Validation Failure
8.4 Auto-Focusing an Invalid Text Field Entry
8.5 Using a Custom Validation Object
8.6 Changing a Form's Action
8.7 Blocking Submissions from the Enter Key
8.8 Advancing Text Field Focus with the Enter Key
8.9 Submitting a Form by an Enter Key Press in Any Text Box
8.10 Disabling Form Controls
8.11 Hiding and Showing Form Controls
8.12 Allowing Only Numbers (or Letters) in a Text Box
8.13 Auto-Tabbing for Fixed-Length Text Boxes
8.14 Changing select Element Content
8.15 Copying Form Data Between Pages
9.Managing Events
9.1 Equalizing the IE and W3C Event Models
9.2 Initiating a Process After the Page Loads
9.3 Appending Multiple Load Event Handlers
9.4 Determining the Coordinates of a Click Event
9.5 Preventing an Event from Performing Its Default Behavior
9.6 Blocking Duplicate Clicks
9.7 Determining Which Element Received an Event
9.8 Determining Which Mouse Button Was Pressed
9.9 Reading Which Character Key Was Typed
9.10 Reading Which Noncharacter Key Was Pressed
9.11 Determining Which Modifier Keys Were Pressed During an Event
9.12 Determining the Element the Cursor Rolled From/To
9.13 Synchronizing Sounds to Events
10.Page Navigation Techniques
10.1 Loading a New Page or Anchor
10.2 Keeping a Page Out of the Browser History
10.3 Using a select Element for Navigation
10.4 Passing Data Between Pages via Cookies
10.5 Passing Data Between Pages via Frames
10.6 Passing Data Between Pages via URLs
10.7 Creating a Contextual (Right-Click) Menu
10.8 Creating Drop-Down Navigation Menus
10.9 Providing Navigation Trail Menus
10.10 Creating Expandable Menus
10.11 Creating Collapsible XML Menus
11.Managing Style Sheets
11.1 Assigning Style Sheet Rules to an Element Globally
11.2 Assigning Style Sheet Rules to a Subgroup of Elements
11.3 Assigning Style Sheet Rules to an Individual Element
11.4 Importing External Style Sheets
11.5 Importing Browser- or Operating System-Specific Style Sheets
11.6 Changing Imported Style Sheets After Loading
11.7 Enabling/Disabling Style Sheets
11.8 Toggling Between Style Sheets for an Element
11.9 Overriding a Style Sheet Rule
11.10 Turning Arbitrary Content into a Styled Element
11.11 Creating Center-Aligned Body Elements
11.12 Reading Effective Style Sheet Property Values
11.13 Forcing Recent Browsers into Standards-Compatibility Mode
12.Visual Effects for Stationary Content
12.1 Precaching Images
12.2 Swapping Images (Rollovers)
12.3 Reducing Rollover Image Downloads with JavaScript
12.4 Reducing Rollover Image Downloads with CSS
12.5 Dynamically Changing Image Sizes
12.6 Changing Text Style Properties
12.7 Offering Body Text Size Choices to Users
12.8 Creating Custom Link Styles
12.9 Changing Page Background Colors and Images
12.10 Hiding and Showing Elements
12.11 Adjusting Element Transparency
12.12 Creating Transition Visual Effects
12.13 Drawing Charts in the Canvas Element
13.Positioning HTML Elements
13.1 Making an Element Positionable in the Document Space
13.2 Connecting a Positioned Element to a Body Element
13.3 Controlling Positioning via a DHTML JavaScript Library
13.4 Deciding Between div and span Containers
13.5 Adjusting Positioned Element Stacking Order (Z-order)
13.6 Centering an Element on Top of Another Element
13.7 Centering an Element in a Window or Frame
13.8 Determining the Location of a Nonpositioned Element
13.9 Animating Straight-Line Element Paths
13.10 Animating Circular Element Paths
13.11 Creating a Draggable Element
13.12 Scrolling div Content
13.13 Creating a Custom Scrollbar
13.14 Creating a Slider Control
14.Creating Dynamic Content
14.1 Writing Dynamic Content During Page Loading
14.2 Creating New Page Content Dynamically
14.3 Including External HTML Content
14.4 Embedding XML Data
14.5 Embedding Data As JavaScript Objects
14.6 Transforming XML Data into HTML Tables
14.7 Transforming JavaScript Objects into HTML Tables
14.8 Converting an XML Node Tree to JavaScript Objects
14.9 Creating a New HTML Element
14.10 Creating Text Content for a New Element
14.11 Creating Mixed Element and Text Nodes
14.12 Inserting and Populating an iframe Element
14.13 Getting a Reference to an HTML Element Object
14.14 Referencing All Elements of the Same Class
14.15 Replacing Portions of Body Content
14.16 Removing Body Content
14.17 Using XMLHttpRequest for a REST Request
14.18 Using XMLHttpRequest for a SOAP Call
14.19 Sorting Dynamic Tables
14.20 Walking the Document Node Tree
14.21 Capturing Document Content
15.Dynamic Content Applications
15.1 Displaying a Random Aphorism
15.2 Converting a User Selection into an Arbitrary Element
15.3 Automating the Search-and-Replace of Body Content
15.4 Designing a User-Editable Content Page
15.5 Creating a Slide Show
15.6 Auto-Scrolling the Page
15.7 Greeting Users with Their Time of Day
15.8 Displaying the Number of Days Before Christmas
15.9 Displaying a Countdown Timer
15.10 Creating a Calendar Date Picker
15.11 Displaying an Animated Progress Bar
A.Keyboard Event Character Values
B.Keyboard Key Code Values
C.ECMAScript Reserved Keywords
Index