-->
Navigation
JavaScript Bible, Gold Edition. Danny Goodman

JavaScript Bible, Gold Edition. Danny Goodman

Now pay Easier and Secure using Paypal
Price:

Read more

JS.BG

Danny Goodman

With a foreword by Brendan Eich, creator of JavaScript

“I highly recommend Danny Goodman’s
JavaScript Bible.”
—Brendan Eich, creator of JavaScript

Advance your JavaScript skills with the most
comprehensive resource available
Conquer high-end scripting challenges using
the latest techniques
Optimize scripts for Internet Explorer 5.5
and Netscape Navigator6

JavaScript Bible, Gold Edition. Danny Goodman
JavaScript Bible, Gold Edition

Praise for Danny Goodman’s JavaScript Bible
“JavaScript Bible is the definitive resource in JavaScript programming. 
I am never more than three feet from my copy.”
—Steve Reich, CEO, PageCoders
“This book is a must-have for any Web developer or programmer.”
—Thoma Lile, President, Kanis Technologies, Inc.
“Outstanding book. I would recommend this book to anyone interested in learning to
develop advanced Web sites. Mr. Goodman did an excellent job of organizing this
book and writing it so that even a beginning programmer can understand it.”
—Jason Hensley, Director of Internet Services, NetVoice, Inc.
“Goodman is always great at delivering clear and concise technical books!”
—Dwayne King, Chief Technology Officer, White Horse
“JavaScript Bible is well worth the money spent!”
—Yen C.Y. Leong, IT Director, Moo Mooltimedia, a member of SmartTransact Group
“A must-have book for any Internet developer.”
—Uri Fremder, Senior Consultant, TopTier Software
“I love this book! I use it all the time, and it always delivers. It’s the only JavaScript book I use!”
—Jason Badger, Web Developer
“Whether you are a professional or a beginner, this is a great book to get.”
—Brant Mutch, Web Application Developer, Wells Fargo Card Services, Inc.
“I never thought I’d ever teach programming before reading your book [JavaScript
Bible]. It’s so simple to use—the Programming Fundamentals section brought it all
back! Thank you for such a wonderful book, and for breaking through my programming block!”
—Susan Sann Mahon, Certified Lotus Instructor, TechNet Training
“I continue to get so much benefit from JavaScript Bible. 
What an amazing book! Danny Goodman is the greatest!”
—Patrick Moss
“Danny Goodman is very good at leading the reader into the subject. 
JavaScript Bible has everything we could possibly need.”
—Philip Gurdon
“An excellent book that builds solidly from whatever level the reader is at. 
A book that is both witty and educational.”
—Dave Vane
“I continue to use the book on a daily basis and would be lost without it.”
—Mike Warner, Founder, Oak Place Productions
“JavaScript Bible is by far the best JavaScript resource I’ve ever seen (and I’ve seen quite a few).”
—Robert J. Mirro, Independent Consultant, RJM Consulting

About the Author
Danny Goodman is the author of numerous critically acclaimed and best-selling
books, including The Complete HyperCard Handbook, Danny Goodman’s AppleScript
Handbook, and Dynamic HTML: The Definitive Reference. He is a renowned authority
and expert teacher of computer scripting languages and is widely known for his
“JavaScript Apostle” articles at Netscape’s ViewSource online developer newsletter.
His writing style and pedagogy continue to earn praise from readers and teachers
around the world. To help keep his finger on the pulse of real-world programming
challenges, Goodman frequently lends his touch as consulting programmer and
designer to leading-edge World Wide Web and intranet sites from his home base in the San Francisco area.

Acknowledgments
Before closing, I would like to acknowledge the contributions of many folks
who helped make this edition possible: Eric Krock, Tom Pixley, Vidur
Apparao, and especially the ever-patient, all-knowing Brendan Eich (Mozilla);
Martin Honnen (Netscape DevEdge Champion); Tantek Celik (Microsoft’s Macintosh
development group); Brenda McLaughlin, Walt Bruce, Michael Roney, Debra
Williams Cauley, Neil Romanosky, Eric Newman, Cordelia Heaney, Jerelind Charles,
and Victoria Lee O’Malley (Hungry Minds, Inc.); technical reviewer David Wall;
“cookie man” Bill Dortch (hIdaho Design); Red and his friends (Mars, Incorporated);
and fellow scripters and newsgroup kibitzers, who unwittingly advised me as to
where scripters were having trouble with the language. Above all, I want to thank
the many readers of the first three editions of this book (with both titles, Danny
Goodman’s JavaScript Handbook and JavaScript Bible) for investing in this ongoing
effort. I wish I had the space here to acknowledge by name so many who have sent
e-mail notes and suggestions: Your input has been most welcome and greatly appreciated.
Now it’s time to get down to the fun of learning JavaScript. Enjoy!

Preface

For nearly 20 years, I have written the books I wished had already been written
to help me learn or use a new technology. Whenever possible, I like to get in at
the very beginning of a new authoring or programming environment, feel the growing
pains, and share with readers the solutions to my struggles. This Gold edition of
the JavaScript Bible represents knowledge and experience accumulated over five
years of daily work in JavaScript and a constant monitoring of newsgroups for questions,
problems, and challenges facing scripters at all levels. My goal is to help you
avoid the same frustration and head scratching I and others have experienced
through multiple generations of scriptable browsers.

While previous editions of this book focused on the then-predominant Netscape
Navigator browser, the swing of the browser market share pendulum currently
favors Microsoft Internet Explorer. At the same time, Netscape has accomplished
the admirable task of reinventing its own browser in light of rapidly advancing
industry standards. As a result of both of these trends, this massively revised and
expanded Gold edition treats both brands of browsers as equals as far as scripters
are concerned. You hear my praise and dismay at various scripting features of both
browser families. But empowering you to design and write good scripts is my passion,
regardless of browser. Therefore, the book contains details about proprietary
and standard implementations to equip you to choose the development path that
best fits your content’s audience. If you detect any bias of mine throughout this
book, it is a desire, where possible, to write scripts that work on as many browsers as possible.

Organization and Features of This Edition
Because of the greatly expanded range of vocabularies that scripts may use in the
latest browser versions, the biggest change to the structure of the book is in the reference
portion. In this edition, you find a greater distinction between the document
object model and core JavaScript language reference sections. This new division
should help those readers who are primarily interested in only the JavaScript language
(for use in other applications) find what they need more quickly. Here are
some details about the book’s structure.
Part I
Part I of the book begins with a chapter that shows how JavaScript compares with
Java and discusses its role within the rest of the World Wide Web. The Web browser
and scripting world have undergone significant changes since JavaScript first
arrived on the scene. That’s why Chapter 2 is devoted to addressing challenges facing
scripters who must develop applications for both single- and cross-platform
browser audiences amid rapidly changing standards efforts. Chapter 3 provides the
first foray into JavaScript, where you get to write your first practical script.
Part II
All of Part II is handed over to a tutorial for newcomers to JavaScript. Nine lessons
provide you with a gradual path through browser internals, basic programming
skills, and genuine JavaScript scripting. With only a couple of clearly labeled items,
the lessons cover scripting topics that apply to all scriptable browsers. Exercises follow
at the end of each lesson to help reinforce what you just learned and challenge
you to use your new knowledge (you’ll find answers to the exercises in Appendix C).
The goal of the tutorial is to equip you with sufficient experience to start scripting
simple pages right away while making it easier for you to understand the in-depth
discussions and examples in the rest of the book. By the end of the final lesson,
you’ll know how to script multiple frame environments and even create the mouserollover
image swapping effect that is popular in a lot of Web pages these days.
You can find all of the Part II chapters on the CD-ROM that accompanies this book.
Part III
Part III, the largest section of the book, provides in-depth coverage of the document
object models as implemented in browsers from the earliest days to today. In all reference
chapters, a compatibility chart indicates the browser version that supports
each object and object feature. One chapter in particular, Chapter 15, contains reference
material that is shared by most of the remaining chapters of Part III. To help
you refer back to Chapter 15 from other chapters, a dark tab along the outside edge
of the page shows you at a glance where the chapter is located. Additional navigation
aids include guide words at the bottoms of most pages to indicate which object
and object feature is covered on the page.
Part IV
Reference information for the core JavaScript language fills Part IV. As with reference
chapters of Part III, the JavaScript chapters display browser compatibility
charts for every JavaScript language term. Guide words at the bottoms of pages
help you find a particular term quickly.
Part V
In Part V, I get down to the business of deploying JavaScript. Here are the practical
aspects of JavaScript, such as Chapter 43’s coverage of client-side form data validation
and Chapter 44’s coverage of blending Java applets and plug-ins into pages.
On the CD-ROM
Debugging scripts is the focus of Chapter 45, with tips on understanding error
messages, building your own debugging tools. Chapter 46 goes into great detail
about security issues for JavaScript-enabled applications. Dynamic HTML in a crossbrowser
environment is the subject of Chapter 47, while Chapter 48 introduces you
to Microsoft’s behaviors mechanism for Windows.
The remaining nine chapters consist of full-fledged applications of JavaScript. These
applications are designed not necessarily as plug-and-play modules you can put into
your pages right away. Instead, their goal is to demonstrate many of the concepts
described earlier in the book by way of real-world examples. New for this edition are
some examples based on XML data islands in Internet Explorer for Windows.
Part VI
Finally, several appendixes at the end of the book provide helpful reference information.
These resources include a JavaScript and Browser Objects Quick Reference in
Appendix A, a list of JavaScript reserved words in Appendix B, answers to Part II’s
tutorial exercises in Appendix C, and Internet resources in Appendix D. In Appendix E,
you also find information on using the CD-ROM that comes with this book.

Prerequisites to Learning JavaScript
Although this book doesn’t demand that you have a great deal of programming
experience behind you, the more Web pages you’ve created with HTML, the easier
you will find it to understand how JavaScript interacts with the familiar elements
you normally place in your pages. Occasionally, you will need to modify HTML tags
to take advantage of scripting. If you are familiar with those tags already, the
JavaScript enhancements will be simple to digest.

Forms and their elements (text fields, buttons, and selection lists) play an especially
important role in much of typical JavaScript work. You should be familiar with
these elements and their HTML attributes. Fortunately, you won’t need to know
about server scripting or passing information from a form to a server. The focus
here is on client-side scripting, which operates independently of the server after
the JavaScript-enhanced HTML page is fully loaded into the browser.

The basic vocabulary of the current HTML standard should be part of your working
knowledge. When we get to using frames, for instance, the focus is on how to script
these elements, not on designing pages with them. Microsoft, Netscape, and other
online sources provide more detailed explanations of frames.
If you’ve never programmed before

To someone who learned HTML from a slim guidebook a few years ago, the size of
this book must be daunting. JavaScript may not be the easiest language in the
world to learn, but believe me, it’s a far cry from having to learn a full programming
language, such as Java or C. Unlike developing a full-fledged monolithic application
(such as the productivity programs you buy in the stores), JavaScript lets you
experiment by writing small snippets of program code to accomplish big things.
The JavaScript interpreter built into every scriptable browser does a great deal of
the technical work for you.

Programming, at its most basic level, consists of nothing more than writing a series of
instructions for the computer to follow. We humans follow instructions all the time,
even if we don’t realize it. Traveling to a friend’s house is a sequence of small instructions:
Go three blocks that way; turn left here; turn right there. Amid these instructions
are some decisions that we have to make: If the stoplight is red, then stop; if the
light is green, then go; if the light is yellow, then floor it. Occasionally, we must repeat
some operations several times (kind of like having to go around the block until a
parking space opens up). A computer program not only contains the main sequence
of steps, but it also anticipates what decisions or repetitions may be needed to
accomplish the program’s goal (such as how to handle the various states of a stoplight
or what to do if someone just stole the parking spot you were aiming for).
The initial hurdle of learning to program is becoming comfortable with the way a
programming language wants its words and numbers organized in these instructions.
Such rules are called syntax, the same as in a living language. Because computers
generally are dumb electronic hulks, they aren’t very forgiving if you don’t
communicate with them in the specific language they understand. When speaking
to another human, you can flub a sentence’s syntax and still have a good chance of
the other person’s understanding you fully. Not so with computer programming languages.
If the syntax isn’t perfect (or at least within the language’s range of knowledge
that it can correct), the computer has the brazenness to tell you that you have
made a syntax error.

The best thing you can do is to just chalk up the syntax errors you receive as learning
experiences. Even experienced programmers get them. Every syntax error you
get—and every resolution of that error made by rewriting the wayward
statement—adds to your knowledge of the language.
If you’ve done a little programming before

Programming experience in a procedural language, such as BASIC or Pascal, may
almost be a hindrance rather than a help to learning JavaScript. Although you may
have an appreciation for precision in syntax, the overall concept of how a program
fits into the world is probably radically different from how JavaScript works. Part of
this has to do with the typical tasks a script performs (carrying out a very specific
task in response to user action within a Web page), but a large part also has to do
with the nature of object-oriented programming.

In a typical procedural program, the programmer is responsible for everything that
appears on the screen and everything that happens under the hood. When the program
first runs, a great deal of code is dedicated to setting up the visual environment.
Perhaps the screen contains several text entry fields or clickable buttons. To
determine which button a user clicks, the program examines the coordinates of the
click and compares those coordinates against a list of all button coordinates on the
screen. Program execution then branches out to perform the instructions reserved
for clicking in that space.

Object-oriented programming is almost the inverse of that process. A button is considered
an object—something tangible. An object has properties, such as its label,
size, alignment, and so on. An object may also contain a script. At the same time, the
system software and browser, working together, can send a message to an object—
depending on what the user does—to trigger the script. For example, if a user clicks
in a text entry field, the system/browser tells the field that somebody has clicked
there (that is, has set the focus to that field), giving the field the task of deciding
what to do about it. That’s where the script comes in. The script is connected to the
field, and it contains the instructions that the field carries out after the user activates
it. Another set of instructions may control what happens when the user types
an entry and tabs or clicks out of the field, thereby changing the content of the field.
Some of the scripts you write may seem to be procedural in construction: They
contain a simple list of instructions that are carried out in order. But when dealing
with data from form elements, these instructions work with the object-based nature
of JavaScript. The form is an object; each radio button or text field is an object as
well. The script then acts on the properties of those objects to get some work done.

Making the transition from procedural to object-oriented programming may be the
most difficult challenge for you. When I was first introduced to object-oriented programming
a number of years ago, I didn’t get it at first. But when the concept
clicked—a long, pensive walk helped—so many light bulbs went on inside my
head that I thought I might glow in the dark. From then on, object orientation
seemed to be the only sensible way to program.

If you’ve programmed in C before
By borrowing syntax from Java (which, in turn, is derived from C and C++), JavaScript
shares many syntactical characteristics with C. Programmers familiar with C will feel
right at home. Operator symbols, conditional structures, and repeat loops follow very
much in the C tradition. You will be less concerned about data types in JavaScript than
you are in C. In JavaScript, a variable is not restricted to any particular data type.
With so much of JavaScript’s syntax familiar to you, you will be able to concentrate
on document object model concepts, which may be entirely new to you. You will
still need a good grounding in HTML (especially form elements) to put your expertise
to work in JavaScript.

If you’ve programmed in Java before
Despite the similarity in their names, the two languages share only surface aspects:
loop and conditional constructions, C-like “dot” object references, curly braces for
grouping statements, several keywords, and a few other attributes. Variable declarations,
however, are quite different, because JavaScript is a loosely typed language.
A variable can contain an integer value in one statement and a string in the
next (though I’m not saying that this is good style). What Java refers to as methods,
JavaScript calls methods (when associated with a predefined object) or functions
(for scripter-defined actions). JavaScript methods and functions may return values
of any type without having to state the data type ahead of time.

Perhaps the most important aspects of Java to suppress when writing JavaScript are
the object-oriented notions of classes, inheritance, instantiation, and message passing.
These aspects are simply non-issues when scripting. At the same time, however,
JavaScript’s designers knew that you’d have some hard-to-break habits. For example,
although JavaScript does not require a semicolon at the end of each statement line,
if you type one in your JavaScript source code, the JavaScript interpreter won’t balk.
If you’ve written scripts (or macros) before

Experience with writing scripts in other authoring tools or macros in productivity
programs is helpful for grasping a number of JavaScript’s concepts. Perhaps the
most important concept is the idea of combining a handful of statements to perform
a specific task on some data. For example, you can write a macro in Microsoft Excel
that performs a data transformation on daily figures that come in from a corporate
financial report on another computer. The macro is built into the Macro menu, and
you run it by choosing that menu item whenever a new set of figures arrives.

More sophisticated scripting, such as that found in Toolbook or HyperCard, prepares
you for the object orientation of JavaScript. In those environments, screen
objects contain scripts that are executed when a user interacts with those objects.
A great deal of the scripting you will do in JavaScript matches that pattern exactly.
In fact, those environments resemble the scriptable browser environment in
another way: They provide a finite set of predefined objects that have fixed sets of
properties and behaviors. This predictability makes learning the entire environment
and planning an application easier to accomplish.


Screenshot

JavaScript Bible, Gold Edition. Danny Goodman

Purchase Now !
Just with Paypal



Product details
 Price
 File Size
 35,569 KB
 Pages
 2177 p
 File Type
 PDF format
 ISBN
 0-7645-4718-6
 Copyright
 2001 Danny Goodman  

Contents at a Glance
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Part I: Getting Started with JavaScript . . . . . . . . . . . . . . . . . . . 1
Chapter 1: JavaScript’s Role in the World Wide Web and Beyond . . . . . . . . . . 3
Chapter 2: Authoring Challenges Amid the Browser Wars . . . . . . . . . . . . . . 11
Chapter 3: Your First JavaScript Script . . . . . . . . . . . . . . . . . . . . . . . . . 19
Part II: JavaScript Tutorial — Summary . . . . . . . . . . . . . . . . . . 29
Chapter 4: Browser and Document Objects . . . . . . . . . . . . . . . . . . . . CD-1
Chapter 5: Scripts and HTML Documents . . . . . . . . . . . . . . . . . . . . . CD-23
Chapter 6: Programming Fundamentals, Part I . . . . . . . . . . . . . . . . . . CD-35
Chapter 7: Programming Fundamentals, Part II . . . . . . . . . . . . . . . . . . CD-47
Chapter 8: Window and Document Objects . . . . . . . . . . . . . . . . . . . . CD-61
Chapter 9: Forms and Form Elements . . . . . . . . . . . . . . . . . . . . . . . CD-75
Chapter 10: Strings, Math, and Dates . . . . . . . . . . . . . . . . . . . . . . . . CD-89
Chapter 11: Scripting Frames and Multiple Windows . . . . . . . . . . . . . . CD-99
Chapter 12: Images and Dynamic HTML . . . . . . . . . . . . . . . . . . . . . CD-109
Part III: Document Objects Reference . . . . . . . . . . . . . . . . . . . 35
Chapter 13: JavaScript Essentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Chapter 14: Document Object Model Essentials . . . . . . . . . . . . . . . . . . . 61
Chapter 15: Generic HTML Element Objects . . . . . . . . . . . . . . . . . . . . . 105
Chapter 16: Window and Frame Objects . . . . . . . . . . . . . . . . . . . . . . . 217
Chapter 17: Location and History Objects . . . . . . . . . . . . . . . . . . . . . . 321
Chapter 18: The Document and Body Objects . . . . . . . . . . . . . . . . . . . . 339
Chapter 19: Body Text Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Chapter 20: HTML Directive Objects . . . . . . . . . . . . . . . . . . . . . . . . . 473
Chapter 21: Link and Anchor Objects . . . . . . . . . . . . . . . . . . . . . . . . . 493
Chapter 22: Image, Area, and Map Objects . . . . . . . . . . . . . . . . . . . . . . 505
Chapter 23: The Form and Related Objects . . . . . . . . . . . . . . . . . . . . . 527
Chapter 24: Button Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Chapter 25: Text-Related Form Objects . . . . . . . . . . . . . . . . . . . . . . . . 569
Chapter 26: Select, Option, and FileUpload Objects . . . . . . . . . . . . . . . . 589
Chapter 27: Table and List Objects . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Chapter 28: The Navigator and Other Environment Objects . . . . . . . . . . . . 665
Chapter 29: Event Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Chapter 30: Style Sheet and Style Objects . . . . . . . . . . . . . . . . . . . . . . 777
Chapter 31: Positioned Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Chapter 32: Embedded Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
Chapter 33: XML Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
Part IV: JavaScript Core Language Reference . . . . . . . . . . . . . . 925
Chapter 34: The String Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
Chapter 35: The Math, Number, and Boolean Objects . . . . . . . . . . . . . . . 951
Chapter 36: The Date Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
Chapter 37: The Array Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
Chapter 38: The Regular Expression and RegExp Objects . . . . . . . . . . . . 1007
Chapter 39: Control Structures and Exception Handling . . . . . . . . . . . . . 1033
Chapter 40: JavaScript Operators . . . . . . . . . . . . . . . . . . . . . . . . . . 1069
Chapter 41: Functions and Custom Objects . . . . . . . . . . . . . . . . . . . . 1093
Chapter 42: Global Functions and Statements . . . . . . . . . . . . . . . . . . . 1127
Part V: Putting JavaScript to Work . . . . . . . . . . . . . . . . . . . . 1147
Chapter 43: Data-Entry Validation . . . . . . . . . . . . . . . . . . . . . . . . . . 1149
Chapter 44: Scripting Java Applets and Plug-ins . . . . . . . . . . . . . . . . . . 1177
Chapter 45: Debugging Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217
Chapter 46: Security and Netscape Signed Scripts . . . . . . . . . . . . . . . . . 1239
Chapter 47: Cross-Browser Dynamic HTML Issues . . . . . . . . . . . . . . . . 1259
Chapter 48: Internet Explorer Behaviors . . . . . . . . . . . . . . . . . . . . . . 1273
Chapter 49: Application: Tables and Calendars . . . . . . . . . . . . . . . . . . 1285
Chapter 50: Application: A Lookup Table . . . . . . . . . . . . . . . . . . . . . . 1299
Chapter 51: Application: A “Poor Man’s” Order Form . . . . . . . . . . . . . . . 1311
Chapter 52: Application: Outline-Style Table of Contents . . . . . . . . . . . . . 1321
Chapter 53: Application: Calculations and Graphics . . . . . . . . . . . . . . . 1355
Chapter 54: Application: Intelligent “Updated” Flags . . . . . . . . . . . . . . . 1365
Chapter 55: Application: Decision Helper . . . . . . . . . . . . . . . . . . . . . . 1375
Chapter 56: Application: Cross-Browser DHTML Map Puzzle . . . . . . . . . . 1399
Chapter 57: Application: Transforming XML Data Islands . . . . . . . . . . . . 1415
Part VI: Appendixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431
Appendix A: JavaScript and Browser Object Quick Reference . . . . . . . . . . 1433
Appendix B: JavaScript Reserved Words . . . . . . . . . . . . . . . . . . . . . . 1447
Appendix C: Answers to Tutorial Exercises . . . . . . . . . . . . . . . . . . . . . 1449
Appendix D: JavaScript and DOM Internet Resources . . . . . . . . . . . . . . . 1465
Appendix E: What’s on the CD-ROM . . . . . . . . . . . . . . . . . . . . . . . . . 1469
Appendix F: Examples from Parts III and IV . . . . . . . . . . . . . . . . . . . CD-117
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473
End User License Agreement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512
CD-ROM Installation Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516


Table of Contents
Foreword . . . . . . ix
Preface. . . . . . . . . xi
Acknowledgments . . .  . . . . xix
Part I: Getting Started with JavaScript
Chapter 1: JavaScript’s Role in the World Wide Web and Beyond
Competition on the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Hypertext Markup Language (HTML) . . . . . . . . . . . . . . . . . . . . . . . 4
CGI Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Of Helpers and Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Java Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
JavaScript: A Language for All . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
JavaScript: The Right Tool for the Right Job . . . . . . . . . . . . . . . . . . . 9
Chapter 2: Authoring Challenges Amid the Browser Wars
Leapfrog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Duck and Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Compatibility Issues Today . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Developing a Scripting Strategy . . . . . . . . . . . . . . . . . . . . . . . . . 16
Chapter 3: Your First JavaScript Script
The Software Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Setting Up Your Authoring Environment . . . . . . . . . . . . . . . . . . . . 20
What Your First Script Will Do . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Entering Your First Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Examining the Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Have Some Fun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Part II: JavaScript Tutorial — Summary
Chapter 4: Browser and Document Objects
Scripts Run the Show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-1
JavaScript in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-2
The Document Object Model . . . . . . . . . . . . . . . . . . . . . . . . . CD-8
When a Document Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-11
Object References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-14
About the Dot Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-17
What Defines an Object? . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-18
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-21
Chapter 5: Scripts and HTML Documents
Where Scripts Go in Documents . . . . . . . . . . . . . . . . . . . . . . . CD-23
JavaScript Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-27
When Script Statements Execute . . . . . . . . . . . . . . . . . . . . . . . CD-28
Viewing Script Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-30
Scripting versus Programming . . . . . . . . . . . . . . . . . . . . . . . . CD-32
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-33
Chapter 6: Programming Fundamentals, Part I
What Language Is This? . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-35
Working with Information . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-35
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-36
Expressions and Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . CD-38
Data Type Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-40
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-42
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-44
Chapter 7: Programming Fundamentals, Part II
Decisions and Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-47
Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-48
About Repeat Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-50
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-51
About Curly Braces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-54
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-55
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-59
Chapter 8: Window and Document Objects
Document Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-61
The Window Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-62
Window Properties and Methods . . . . . . . . . . . . . . . . . . . . . . CD-65
The Location Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-68
The History Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-69
The Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-69
The Link Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-73
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-73
Chapter 9: Forms and Form Elements
The FORM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-75
Form Controls as Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-77
The Button Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-79
The Checkbox Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-79
The Radio Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-80
The SELECT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-82
Passing Form Data and Elements to Functions . . . . . . . . . . . . . . . CD-83
Submitting and Prevalidating Forms . . . . . . . . . . . . . . . . . . . . . CD-85
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-87
Chapter 10: Strings, Math, and Dates
Core Language Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-89
String Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-90
The Math Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-93
The Date Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-94
Date Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-96
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-97
Chapter 11: Scripting Frames and Multiple Windows
Frames: Parents and Children . . . . . . . . . . . . . . . . . . . . . . . . CD-99
References among Family Members . . . . . . . . . . . . . . . . . . . . CD-101
Frame Scripting Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-103
Controlling Multiple Frames—Navigation Bars . . . . . . . . . . . . . CD-103
More about Window References . . . . . . . . . . . . . . . . . . . . . . CD-106
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-107
Chapter 12: Images and Dynamic HTML
The Image Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-109
More Dynamism in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . CD-115
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-116
Part III: Document Objects Reference
Chapter 13: JavaScript Essentials
JavaScript Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Core Language Standard—ECMAScript . . . . . . . . . . . . . . . . . . . . . 38
Embedding Scripts in HTML Documents . . . . . . . . . . . . . . . . . . . . 38
Browser Version Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Designing for Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Language Essentials for Experienced Programmers . . . . . . . . . . . . . . 57
Onward to Object Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Chapter 14: Document Object Model Essentials
The Object Model Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
How Document Objects Are Born . . . . . . . . . . . . . . . . . . . . . . . . 64
Object Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Object Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Object Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Object Model Smorgasbord . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Basic Object Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Basic Object Model Plus Images . . . . . . . . . . . . . . . . . . . . . . . . . 69
Navigator 4–Only Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Internet Explorer 4+ Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 71
Internet Explorer 5+ Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 75
The W3C DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Mixing Object Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Simulating IE4+ Syntax in NN6 . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Where to Go from Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Chapter 15: Generic HTML Element Objects
Generic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Chapter 16: Window and Frame Objects
Window Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Window Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
FRAME Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
FRAMESET Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
IFRAME Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
popup Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Chapter 17: Location and History Objects
Location Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
History Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Chapter 18: The Document and Body Objects
Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
BODY Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Chapter 19: Body Text Objects
BLOCKQUOTE and Q Element Objects . . . . . . . . . . . . . . . . . . . . . 410
BR Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
FONT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
H1...H6 Element Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
HR Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
LABEL Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
MARQUEE Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Range Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
selection Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Text and TextNode Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
TextRange Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
TextRectangle Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Chapter 20: HTML Directive Objects
HTML Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
HEAD Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
BASE Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
BASEFONT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
ISINDEX Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
LINK Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
META Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
SCRIPT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
TITLE Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Chapter 21: Link and Anchor Objects
Anchor, Link, and A Element Objects . . . . . . . . . . . . . . . . . . . . . . 493
Chapter 22: Image, Area, and Map Objects
Image and IMG Element Objects . . . . . . . . . . . . . . . . . . . . . . . . 505
AREA Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
MAP Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Chapter 23: The Form and Related Objects
The Form in the Object Hierarchy . . . . . . . . . . . . . . . . . . . . . . . 527
FORM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
FIELDSET and LEGEND Element Objects . . . . . . . . . . . . . . . . . . . . 545
LABEL Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Chapter 24: Button Objects
The BUTTON Element Object, and the Button, Submit,
and Reset Input Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Checkbox Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Radio Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Image Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Chapter 25: Text-Related Form Objects
Text Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Password Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Hidden Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
TEXTAREA Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Chapter 26: Select, Option, and FileUpload Objects
SELECT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
OPTION Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
OPTGROUP Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
File Input Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Chapter 27: Table and List Objects
The Table Object Family Hierarchy . . . . . . . . . . . . . . . . . . . . . . . 614
TABLE Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
TBODY, TFOOT, and THEAD Element Objects . . . . . . . . . . . . . . . . . 643
CAPTION Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
COL and COLGROUP Element Objects . . . . . . . . . . . . . . . . . . . . . 646
TR Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
TD and TH Element Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
OL Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
UL Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
LI Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
DL, DT, and DD Element Objects . . . . . . . . . . . . . . . . . . . . . . . . 662
DIR and MENU Element Objects . . . . . . . . . . . . . . . . . . . . . . . . 663
Chapter 28: The Navigator and Other Environment Objects
clientInformation Object (IE4+) and navigator Object (All) . . . . . . . . . 666
mimeType Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
plugin Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
Looking for MIME Types and Plug-ins . . . . . . . . . . . . . . . . . . . . . 691
screen Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
userProfile Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
Chapter 29: Event Objects
Why “Events”? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
Event Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Referencing the event object . . . . . . . . . . . . . . . . . . . . . . . . . . 732
event Object Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Dueling Event Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Event Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
NN4 event Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
IE4+ event Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
NN6+ event Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Chapter 30: Style Sheet and Style Objects
Making Sense of the Object Names . . . . . . . . . . . . . . . . . . . . . . . 778
Imported Style Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Reading Style Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
STYLE Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
styleSheet Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
cssRule and rule Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
currentStyle, runtimeStyle, and style Objects . . . . . . . . . . . . . . . . . 796
filter Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
Chapter 31: Positioned Objects
What Is a Layer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
NN4 Layer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
Positioned Elements in the Modern DOM . . . . . . . . . . . . . . . . . . . 874
Chapter 32: Embedded Objects
APPLET Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
OBJECT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
EMBED Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
The Odd Case of the PARAM Element . . . . . . . . . . . . . . . . . . . . . 917
Chapter 33: XML Objects
Elements and Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
XML Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
Part IV: JavaScript Core Language Reference
Chapter 34: The String Object 
String and Number Data Types . . . . . . . . . . . . . . . . . . . . . . . . . 927
String Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
String Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945
URL String Encoding and Decoding . . . . . . . . . . . . . . . . . . . . . . . 949
Chapter 35: The Math, Number, and Boolean Objects
Numbers in JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
Math Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
Number Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
Boolean Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
Chapter 36: The Date Object
Time Zones and GMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
The Date Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
Validating Date Entries in Forms . . . . . . . . . . . . . . . . . . . . . . . . 983
Chapter 37: The Array Object
Structured Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
Creating an Empty Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988
Populating an Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989
JavaScript 1.2 Array Creation Enhancements . . . . . . . . . . . . . . . . . 991
Deleting Array Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
Parallel Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
Multidimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
Array Object Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996
Array Object Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998
Chapter 38: The Regular Expression and RegExp Objects
Regular Expressions and Patterns . . . . . . . . . . . . . . . . . . . . . . . 1007
Language Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
Object Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013
Using Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017
Regular Expression Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023
RegExp Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027
Chapter 39: Control Structures and Exception Handling
If and If. . .Else Decisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034
Conditional Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
Repeat (for) Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039
The while Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044
The do-while Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045
Looping through Properties (for-in) . . . . . . . . . . . . . . . . . . . . . 1046
The with Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
Labeled Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048
The switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
Using try-catch-finally constructions . . . . . . . . . . . . . . . . . . . . . 1055
Throwing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059
Error Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063
Chapter 40: JavaScript Operators
Operator Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069
Comparison Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070
Equality of Disparate Data Types . . . . . . . . . . . . . . . . . . . . . . . 1072
Connubial Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
Assignment Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076
Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078
Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082
Object Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083
Miscellaneous Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087
Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
Chapter 41: Functions and Custom Objects
Function Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093
Function Application Notes . . . . . . . . . . . . . . . . . . . . . . . . . . 1102
Custom Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108
Object-Oriented Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120
Object Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123
Chapter 42: Global Functions and Statements
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128
Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137
IE/Windows Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140
Part V: Putting JavaScript to Work
Chapter 43: Data-Entry Validation 
Real-Time Versus Batch Validation . . . . . . . . . . . . . . . . . . . . . . 1149
Designing Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151
Building a Library of Filter Functions . . . . . . . . . . . . . . . . . . . . . 1152
Combining Validation Functions . . . . . . . . . . . . . . . . . . . . . . . . 1156
Date and Time Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158
Selecting Text Fields for Reentry . . . . . . . . . . . . . . . . . . . . . . . 1160
An “Industrial-Strength” Validation Solution . . . . . . . . . . . . . . . . . 1161
Plan for Data Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176
Chapter 44: Scripting Java Applets and Plug-ins
LiveConnect Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177
Why Control Java Applets? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178
A Little Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179
Scripting Applets in Real Life . . . . . . . . . . . . . . . . . . . . . . . . . 1181
Applet-to-Script Communication . . . . . . . . . . . . . . . . . . . . . . . 1190
Scripting Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197
Scripting Java Classes Directly . . . . . . . . . . . . . . . . . . . . . . . . 1214
Chapter 45: Debugging Scripts
Syntax versus Runtime Errors . . . . . . . . . . . . . . . . . . . . . . . . . 1217
Error Message Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218
Error Message Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219
Sniffing Out Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226
A Simple Trace Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232
Browser Crashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235
Preventing Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235
Testing Your Masterpiece . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236
Chapter 46: Security and Netscape Signed Scripts
Battening Down the Hatches . . . . . . . . . . . . . . . . . . . . . . . . . . 1239
When Worlds Collide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240
The Java Sandbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241
Security Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241
The Same Origin Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242
The Netscape Signed Script Policy . . . . . . . . . . . . . . . . . . . . . . 1244
The Digital Certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246
Signing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1247
Accessing Protected Properties and Methods . . . . . . . . . . . . . . . . 1251
Blending Privileges into Scripts . . . . . . . . . . . . . . . . . . . . . . . . 1254
Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254
Handling Privilege Manager Errors . . . . . . . . . . . . . . . . . . . . . . 1255
Signed Script Miscellany . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256
Chapter 47: Cross-Browser Dynamic HTML Issues
What Is DHTML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259
Striving for Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261
Working Around Incompatibilities . . . . . . . . . . . . . . . . . . . . . . . 1262
A DHTML API Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
Chapter 48: Internet Explorer Behaviors
Style Sheets for Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
Embedding Behavior Components . . . . . . . . . . . . . . . . . . . . . . 1274
Component Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275
Behavior Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277
For More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283
Chapter 49: Application: Tables and Calendars
About the Calendars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285
Static Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1286
Dynamic Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289
Hybrids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1293
Dynamic HTML Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1293
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297
Chapter 50: Application: A Lookup Table
A Serverless Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299
The Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300
The Implementation Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1308
Chapter 51: Application: A “Poor Man’s” Order Form
Defining the Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311
The Form Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1312
Form HTML and Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319
Chapter 52: Application: Outline-Style Table of Contents
Design Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321
The Implementation Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1322
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324
Cascading Style Sheet Version . . . . . . . . . . . . . . . . . . . . . . . . . 1336
A Futuristic (XML) Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1353
Chapter 53: Application: Calculations and Graphics
The Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355
User Interface Ideas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1356
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1363
Chapter 54: Application: Intelligent “Updated” Flags
The Cookie Conundrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1365
Time’s Not on Your Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366
The Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1367
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1373
Chapter 55: Application: Decision Helper
The Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375
The Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1376
The Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1378
Further Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397
Chapter 56: Application: Cross-Browser DHTML Map Puzzle
The Puzzle Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399
Implementation Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401
Lessons Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1414
Chapter 57: Application: Transforming XML Data Islands
Application Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1416
Implementation Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1418
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1418
Dreams of Other Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1428
What About NN6? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1429
Part VI: Appendixes
Appendix A: JavaScript and Browser Object Quick Reference
Appendix B: JavaScript Reserved Words . . . . . . . . . . . . . . . . 1447
Appendix C: Answers to Tutorial Exercises . . . . . . . . . . . . . . 1449
Chapter 4 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1449
Chapter 5 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1450
Chapter 6 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1451
Chapter 7 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1452
Chapter 8 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1456
Chapter 9 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457
Chapter 10 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1461
Chapter 11 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1463
Chapter 12 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1463
Appendix D: JavaScript and DOM Internet Resources . . . . . . . . 1465
Support and Updates for this Book . . . . . . . . . . . . . . . . . . . . . . 1465
Newsgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1465
FAQs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1466
Online Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467
World Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467
Appendix E: What’s on the CD-ROM . . . . . . . . . . . . . . . . . . 1469
System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1469
Disc Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1469
Appendix F: Examples from Parts III and IV
Chapter 15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-117
Chapter 16 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-253
Chapter 17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-336
Chapter 18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-354
Chapter 19 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-397
Chapter 22 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-453
Chapter 23 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-471
Chapter 24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-479
Chapter 25 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-492
Chapter 26 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-503
Chapter 27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-514
Chapter 28 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-531
Chapter 29 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-543
Chapter 30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-566
Chapter 31 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-572
Chapter 34 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-600
Chapter 35 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-614
Chapter 37 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-616
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473
End User License Agreement . . . . . . . . . . . . . . . . . . . . . . . . 1512
CD-ROM Installation Instructions . . . . . . . . . . . . . . . . . . . . . . 1516

  ●▬▬▬▬▬❂❂❂▬▬▬▬▬●
●▬▬❂❂▬▬●
●▬❂▬●

═════ ═════