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