JavaScript & DHTML Cookbook, 2/e
內容描述
Description
In today's Web 2.0 world, JavaScript and
Dynamic HTML are at the center of the hot new approach to designing highly
interactive pages on the client side. With this environment in mind, the new
edition of this book offers bite-sized solutions to very specific scripting
problems that web developers commonly face. Each recipe includes a focused
piece of code that you can insert right into your application.Why is
JavaScript & DHTML Cookbook so popular? After reading thousands
of forum threads over the years, author and scripting pioneer Danny Goodman
has compiled a list of problems that frequently vex scripters of various
experience levels. For every problem he addresses, Goodman not only offers
code, but a discussion of how and why the solution works. Recipes range from
simple tasks, such as manipulating strings and validating dates in JavaScript,
to entire libraries that demonstrate complex tasks, such as cross-browser
positioning of HTML elements, sorting tables, and implementing Ajax features
on the client.Ideal for novices as well as experienced scripters, this
book contains more than 150 recipes for:
Working with interactive forms and style sheets
Presenting user-friendly page navigation
Creating dynamic content via Document Object Model scripting
Producing visual effects for stationary content
Positioning HTML elements
Working with XML data in the browser Recipes in this Cookbook
are compatible with the latest W3C standards and browsers, including Internet
Explorer 7, Firefox 2, Safari, and Opera 9. Several new recipes provide
client-side Ajax solutions, and many recipes from the previous edition have
been revised to help you build extensible user interfaces for Web 2.0
applications. If you want to write your own scripts and understand how they
work, rather than rely on a commercial web development framework, the
JavaScript & DHTML Cookbook is a must.
Table of Contents
Preface
- 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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