SlideShare ist ein Scribd-Unternehmen logo
1 von 2177
Downloaden Sie, um offline zu lesen
Turn in: .75                                                                   Board: 7.0625                                                              .4375   VISIBLE SPINE = 2.375            .4375
                                                                                                                                                                                                                                                  Board: 7.0625                                                                Turn in: .75




               The Ultimate Guide to JavaScript for Professionals                                                                                                    GOLD
                                                                                                                                                                    EDITION                                G O L D                                    E D I T I O N
               Featuring 15 bonus chapters with expanded coverage of data validation, debugging, plug-ins, security, and more,                                                                                                                            “I highly recommend Danny Goodman’s
                                                                                                                                                                                                           Advance your JavaScript                                            JavaScript Bible.”




                                                                                                                                                                     JavaScript
               plus nine chapters on ready-to-use applications, this monumental reference is truly the most comprehensive and




                                                                                                                                                                     JavaScript
                                                                                                                                                                                                           skills with the most                                          —Brendan Eich, creator of JavaScript
               useful guide to JavaScript available today. Writing with his trademark clarity and verve, leading JavaScript
                                                                                                                                                                                                           comprehensive resource
               authority Danny Goodman covers everything from Cascading Style Sheets and Document Object Models to
                                                                                                                                                                                                           available
               XML data — and gives you all the tools you need to harness the full power of client-side JavaScript.
                                                                                                                                                                                                           Conquer high-end
               Encyclopedic coverage of                                                  “I continue to use the book [JavaScript Bible]
                                                                                          on a daily basis and would be lost without it.”                                                                  scripting challenges using
               JavaScript and DOMs                                                                      —Mike Warner, Founder, Oak Place Publications                                                      the latest techniques
               • Master JavaScript and DOM concepts with Danny’s                         “Whether you are a professional or a beginner,
                 exclusive interactive workbench: The Evaluator
                                                                                                                                                                                                           Optimize scripts for
                                                                                          this is a great book to get.”
                                                                                                             —Brant Mutch, Web Application Developer,
                                                                                                                                                                                                           Internet Explorer 5.5
               • Learn state-of-the-art debugging and tracing tricks                                                    Wells Fargo Card Services, Inc.                                                    and Netscape Navigator 6
               • Apply the latest JavaScript 1.5 exception handling
                 and custom object techniques
               • Implement cross-browser Dynamic HTML applications
                 for MSIE 5.5 and Navigator 6                                                                                             Turn plain                                                                              Features 15
                                                                                                                                          pages into                                                                             bonus chapters                                           The Definitive
               • Embed a universal sound plug-in controller in your                                                                      interactive                                                                                                                                     JavaScript Guide
                 pages                                                                                                                   applications                                                                                                                                    — Over 175,000
               • Develop deployment strategies that best suit                                                                                                                                                                                                                             Copies in Print




                                                                                                                                                                                                                         JavaScript
                 your content goals and target audience

                                                                                                                                                                                                                                                                                                                               ®
                               CD-ROM includes:




                                                                                                                                                                                     ®
                            • A searchable e-version of the book
                         • Nearly 300 ready-to-run scripts from the book
                         • Printable version of the JavaScript and Browser                                                                                               GOODMAN
                           Object Quick Reference
                         • Plus the full version of WebSpice Objects, a
                                                                                                 www.hungr yminds.com
                                                                                                                                                                    Bible
                           demo of BBEdit, and TextPad shareware




                                                                                                                                                                                                                                                    Bible
               System Requirements:                               $ 69.99 USA               Reader Level:                 Shelving Category:
               PC running Windows 95 or later, Windows            $104.99 Canada            Beginning to Advanced         Web Development/JavaScript
               NT 4 or later; Power Macintosh running             £ 55.99 UK incl. VAT                                                                                       Hundreds of Example
               System 7.6 or later. See Appendix E for                                                                                                                       Scripts on CD-ROM!
               details and complete system requirements.                                                            ISBN 0-7645-4718-6

                                                                                                                                                                                                           CD-ROM

                 *85 5 -ADAG e                                                                                ,!7IA7G4-fehbi !:p;Q;T;t;t                                                                   INSIDE!
                                                                                                                                                                                                           Nearly 300 Ready-to-Run
                                                                                                                                                                                                           Example Scripts and More
                                                                                                                                                                                                                                                                                        Danny Goodman
                                                                                                                                                                                                                                                                                           JavaScript pioneer and Consultant
                                                                                                                                                                                                           on CD-ROM!                                                 With a foreword by Brendan Eich, creator of JavaScript
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 program-
   ming 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
JavaScript Bible,
          ®




  Gold Edition
JavaScript Bible,
                                                                   ®




          Gold Edition
                                          Danny Goodman
           With a foreword by Brendan Eich, creator of JavaScript




Best-Selling Books • Digital Downloads • e-Books • Answer Networks • e-Newsletters • Branded Web Sites • e-Learning

                             Indianapolis, IN ✦ Cleveland, OH ✦ New York, NY
JavaScript® Bible, Gold Edition                             Contemporanea de Ediciones for Venezuela; by
Published by                                                Express Computer Distributors for the Caribbean and
Hungry Minds, Inc.                                          West Indies; by Micronesia Media Distributor, Inc. for
909 Third Avenue                                            Micronesia; by Chips Computadoras S.A. de C.V. for
New York, NY 10022                                          Mexico; by Editorial Norma de Panama S.A. for
www.hungryminds.com                                         Panama; by American Bookshops for Finland.
Copyright © 2001 Danny Goodman. All rights                  For general information on Hungry Minds’ products
reserved. No part of this book, including interior          and services please contact our Customer Care
design, cover design, and icons, may be reproduced          department; within the U.S. at 800-762-2974, outside
or transmitted in any form, by any means (electronic,       the U.S. at 317-572-3993 or fax 317-572-4002.
photocopying, recording, or otherwise) without the          For sales inquiries and resellers information,
prior written permission of the publisher.                  including discounts, premium and bulk quantity sales
Library of Congress Control Number: 2001090713              and foreign language translations please contact our
                                                            Customer Care department at 800-434-3422, fax
ISBN: 0-7645-4718-6
                                                            317-572-4002 or write to Hungry Minds, Inc., Attn:
Printed in the United States of America                     Customer Care department, 10475 Crosspoint
10 9 8 7 6 5 4 3 2 1                                        Boulevard, Indianapolis, IN 46256.
1P/RV/QW/QR/IN                                              For information on licensing foreign or domestic
Distributed in the United States by Hungry Minds, Inc.      rights, please contact our Sub-Rights Customer Care
Distributed by CDG Books Canada Inc. for Canada; by         department at 212-884-5000.
Transworld Publishers Limited in the United                 For information on using Hungry Minds’ products
Kingdom; by IDG Norge Books for Norway; by IDG              and services in the classroom or for ordering
Sweden Books for Sweden; by IDG Books Australia             examination copies, please contact our Educational
Publishing Corporation Pty. Ltd. for Australia and          Sales department at 800-434-2086 or fax 317-572-4005.
New Zealand; by TransQuest Publishers Pte Ltd. for          For press review copies, author interviews, or other
Singapore, Malaysia, Thailand, Indonesia, and Hong          publicity information, please contact our Public
Kong; by Gotop Information Inc. for Taiwan; by ICG          Relations department at 317-572-3168 or fax
Muse, Inc. for Japan; by Intersoft for South Africa; by     317-572-4168.
Eyrolles for France; by International Thomson               For authorization to photocopy items for corporate,
Publishing for Germany, Austria, and Switzerland; by        personal, or educational use, please contact
Distribuidora Cuspide for Argentina; by LR                  Copyright Clearance Center, 222 Rosewood Drive,
International for Brazil; by Galileo Libros for Chile; by   Danvers, MA 01923, or fax 978-750-4470.
Ediciones ZETA S.C.R. Ltda. for Peru; by WS Computer
Publishing Corporation, Inc., for the Philippines; by

LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND AUTHOR HAVE USED THEIR
BEST EFFORTS IN PREPARING THIS BOOK. THE PUBLISHER AND AUTHOR MAKE NO
REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE
CONTENTS OF THIS BOOK AND SPECIFICALLY DISCLAIM ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. THERE ARE NO WARRANTIES WHICH
EXTEND BEYOND THE DESCRIPTIONS CONTAINED IN THIS PARAGRAPH. NO WARRANTY MAY BE
CREATED OR EXTENDED BY SALES REPRESENTATIVES OR WRITTEN SALES MATERIALS. THE
ACCURACY AND COMPLETENESS OF THE INFORMATION PROVIDED HEREIN AND THE OPINIONS
STATED HEREIN ARE NOT GUARANTEED OR WARRANTED TO PRODUCE ANY PARTICULAR RESULTS,
AND THE ADVICE AND STRATEGIES CONTAINED HEREIN MAY NOT BE SUITABLE FOR EVERY
INDIVIDUAL. NEITHER THE PUBLISHER NOR AUTHOR SHALL BE LIABLE FOR ANY LOSS OF PROFIT OR
ANY OTHER COMMERCIAL DAMAGES, INCLUDING BUT NOT LIMITED TO SPECIAL, INCIDENTAL,
CONSEQUENTIAL, OR OTHER DAMAGES.
Trademarks: JavaScript is a registered trademark or trademark of Sun Microsystems, Inc. All other
trademarks are property of their respective owners. Hungry Minds, Inc. is not associated with any product
or vendor mentioned in this book.


               is a trademark of Hungry Minds, Inc.
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.
Credits
  Acquisitions Editor                   Quality Control Technicians
  Debra Williams Cauley                 Laura Albert
                                        Joel Draper
  Project Editor                        Andy Hollandbeck
  Neil Romanosky                        Susan Moritz

  Technical Editor                      Permissions Editor
  David Wall                            Laura Moss

  Copy Editors                          Media Development Specialist
  Jerelind Charles                      Greg Stephens
  Victoria Lee O’Malley
                                        Media Development Coordinator
  Proof Editor                          Marisa Pearman
  Cordelia Heaney
                                        Book Designer
  Editorial Manager                     Kurt Krames
  Colleen Totz
                                        Proofreading
  Project Coordinators                  TECHBOOKS Production Services
  Cindy Phipps
  Regina Snyder                         Indexer
                                        Johnna VanHoose Dinse
  Graphics and Production Specialists
  Sean Decker                           Cover Illustrator
  John Greenough                        Kate Shaw
  LeAndra Johnson
  Stephanie Johnson
  Gabriele McCann
  Jill Piscitelli
  Heather Pope
  Ron Terry
  Erin Zeltner
Foreword
 A     s JavaScript’s creator, I would like to say a few words about where JavaScript
       has been, where it is going, and how the book you’re holding will help you to
 make the most of the language.
 JavaScript was born out of a desire to let HTML authors write scripts directly in their
 documents. This may seem obvious now, but in the spring of 1995 it was novel and
 more than a little at odds with both the conventional wisdom (that HTML should
 describe static document structure only) and the Next Big Thing (Java applets, which
 were hyped as the one true way to enliven and extend Web pages). Once I got past
 these contentions, JavaScript quickly shaped up along the following lines:
 ✦ “Java-lite” syntax. Although the “natural language” syntax of HyperTalk was fresh
 in my mind after a friend lent me The Complete HyperCard Handbook by some fellow
 named Goodman, the Next Big Thing weighed heavier, especially in light of another
 goal: scripting Java applets. If the scripting language resembled Java, then those pro-
 grammers who made the jump from JavaScript to Java would welcome similarities in
 syntax. But insisting on Java’s class and type declarations, or on a semicolon after
 each statement when a line ending would do, was out of the question — scripting for
 most people is about writing short snippets of code, quickly and without fuss.
 ✦ Events for HTML elements. Buttons should have onClick event handlers.
 Documents load and unload from windows, so windows should have onLoad and
 onUnload handlers. Users and scripts submit forms: thus the onSubmit handler.
 Although not initially as flexible as HyperCard’s messages (whose handlers inspired
 the onEvent naming convention), JavaScript events let HTML authors take control
 of user interaction from remote servers and respond quickly to user gestures and
 browser actions. With the adoption of the W3C DOM Level 2 event handling recom-
 mendations, JavaScript in modern browsers has fully flexible control over events.
 ✦ Objects without classes. The Self programming language proved the notion of
 prototype-based inheritance. For JavaScript, I wanted a single prototype per object
 (for simplicity and efficiency), based by default on the function called using the new
 operator (for consonance with Java). To avoid distinguishing constructors from
 methods from functions, all functions receive the object naming them as the prop-
 erty that was called, in the this parameter. Although prototypes didn’t appear until
 Navigator 3, they were prefigured in Version 2 by quoted text being treated as an
 object (the String object prototype, to which users could attach methods).
 ✦ Generated HTML. Embedding JavaScript in HTML gave rise to a thought: Let the
 script speak HTML, as if the emitted text and markup were loaded in place of the
 script itself. The possibilities went beyond automating current or last-modified
 dates, to computing whole trees of tables where all the repeated structure was
 rolled up in a scripted loop, while the varying contents to be tabulated came in min-
 imal fashion from JavaScript objects forming a catalog or mini-database.
x   JavaScript Bible, Gold Edition



         At first, I thought JavaScript would most often find use in validating input to HTML
         forms. But before long, I was surprised to see how many Web designers devised
         compelling applications by way of script-generated HTML and JavaScript objects. It
         became clear from user demonstration and feedback that Web designers sought to
         build significant applications quickly and effectively with just a few images, HTML,
         and JavaScript. Eventually they demanded that the browser support what is now
         known as “Dynamic HTML” (one fun link: http://www.javascript-games.org/).
         As legions of Web authors embraced the authoring power of JavaScript, they, in turn,
         demonstrated the crucial advantages of a scripting environment over old-school
         application development. Not only were the HTML and JavaScript languages com-
         paratively easy to use, but development did not require the programming expertise
         needed to light all pixels and handle all events as in a big, traditional application.
         The primacy of JavaScript on the Web today vindicates our early belief in the value
         of a scripting language for HTML authors. By keeping the “pixel-lighting” bar low,
         HTML with images has made Web designers out of millions of people. By keeping
         the “event-handling” bar low, JavaScript has helped many thousands of those
         designers become programmers. Perhaps the ultimate example of Web develop-
         ment’s convergence with application development is the Mozilla browser, wherein
         all of the user-interface and even some custom widgets and modular components
         are implemented entirely using JavaScript, Cascading Style Sheets (CSS), custom
         XML-based markup languages, and images.
         JavaScript is also a general language, useful apart from HTML and XML. It has been
         embedded in servers, authoring tools, browser plug-ins, and other kinds of browsers
         (for such things as 3D graphical worlds). Its international standard, ECMA-262 (ISO
         16262), has advanced to a Third Edition. But compared with languages such as Perl
         and even Java, it is still relatively young. Work toward a Fourth Edition of the lan-
         guage, supporting optional types, classes, and versioning facilities, progresses
         within the ECMA technical committee (see the “JS2” proposal to the ECMA technical
         committee documented at http://www.mozilla.org/js/language/js20/).
         It is clear to me that JavaScript would not have survived without a creative, loyal,
         and patient community of developers; I owe them each a huge debt of thanks.
         Those developers who took up the beta releases of Navigator 2 and disseminated
         vital workarounds and feature requests by e-mail and net-news are the language’s
         godparents. Developer support and feedback continue to make JavaScript the
         eclectic, rambunctious success it is.
         The book in your hands compiles thousands of those “developer miles” with the
         insight of an expert guide and teacher. Danny didn’t know at the time how much inspi-
         ration I found in his HyperCard book, but it was on my desk throughout the develop-
         ment of JavaScript in 1995. His energy, compassion, and clear prose helped me keep the
         goal of “a language for all” in mind. It is enormously gratifying to write the foreword to
         the Gold edition of this book, which has earned so many “satisfied reader miles.”
         I highly recommend Danny Goodman’s JavaScript Bible to anyone who wants to
         learn JavaScript, and especially to those HTML authors who’ve so far written only a
         few scripts or programs — you’re in for a lifetime of fun on the “scripting road” with
         a trusty guide at your side.
                                                                               — Brendan Eich
                                             The Mozilla Organization (http://www.mozilla.org)
Preface
  F    or 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 grow-
  ing 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 ques-
  tions, 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 pas-
  sion, 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 ref-
  erence 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 lan-
  guage (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
xii   JavaScript Bible, Gold Edition



           arrived on the scene. That’s why Chapter 2 is devoted to addressing challenges fac-
           ing 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 fol-
           low 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 mouse-
           rollover image swapping effect that is popular in a lot of Web pages these days.

      On the    You can find all of the Part II chapters on the CD-ROM that accompanies this
      CD-ROM
                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 ref-
           erence chapters, a compatibility chart indicates the browser version that supports
           each object and object feature. One chapter in particular, Chapter 15, contains ref-
           erence 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 naviga-
           tion 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 refer-
           ence 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 valida-
           tion and Chapter 44’s coverage of blending Java applets and plug-ins into pages.
Preface     xiii

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 cross-
browser 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 informa-
tion. 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.


CD-ROM
The accompanying CD-ROM contains over 300 ready-to-run HTML documents that
serve as examples of most of the document object model and JavaScript vocabu-
lary words in Parts III and IV. You can run these examples with your JavaScript-
enabled browser, but be sure to use the index.html page in the listings folder as a
gateway to running the listings. This page shows you the browsers that are compat-
ible with each example listing. I could have provided you with humorous little sam-
ple code fragments out of context, but I think that seeing full-fledged HTML
documents (simple though they may be) for employing these concepts is impor-
tant. I intentionally omitted the script listings from the tutorial part (Part II) of this
book to encourage you to type the scripts. I believe you learn a lot, even by aping
listings from the book, as you get used to the rhythms of typing scripts in docu-
ments. You also find listings from Parts I and V on the CD-ROM.

The CD-ROM holds another valuable resource: dozens and dozens of Example sec-
tions for Parts III and IV, which are compiled in Appendix F. Many of these sections
reveal detailed descriptions of HTML listings that illustrate a particular object
model or language feature. Even more Example sections invite you to try out an
object model or language feature with the help of an interactive workbench, called
The Evaluator — a JavaScript Bible exclusive! You see instant results and quickly
learn how the feature works.

The Quick Reference from Appendix A is in .pdf format on the CD-ROM for you to
print out and assemble as a handy reference, if desired. Adobe Acrobat Reader is
also included on the CD-ROM so that you can read this .pdf file. Finally, the text of
the book is in a .pdf file format on the CD-ROM for easy searching.
xiv   JavaScript Bible, Gold Edition




      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 espe-
           cially 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 instruc-
           tions: Go three blocks that way; turn left here; turn right there. Amid these instruc-
           tions 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 stop-
           light 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 instruc-
           tions. Such rules are called syntax, the same as in a living language. Because com-
           puters generally are dumb electronic hulks, they aren’t very forgiving if you don’t
Preface     xv

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 lan-
guages. If the syntax isn’t perfect (or at least within the language’s range of knowl-
edge 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 learn-
ing 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 pro-
gram first runs, a great deal of code is dedicated to setting up the visual environ-
ment. 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 con-
sidered 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 acti-
vates 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.
xvi   JavaScript Bible, Gold Edition



           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 pro-
           gramming 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 exper-
           tise 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 decla-
           rations, however, are quite different, because JavaScript is a loosely typed lan-
           guage. 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 pass-
           ing. 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.
Preface    xvii

       More sophisticated scripting, such as that found in Toolbook or HyperCard, pre-
       pares 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 environ-
       ment and planning an application easier to accomplish.



Formatting and Naming Conventions
       The script listings and words in this book are presented in a monospace font to
       set them apart from the rest of the text. Because of restrictions in page width, lines
       of script listings may, from time to time, break unnaturally. In such cases, the
       remainder of the script appears in the following line, flush with the left margin of
       the listing, just as they would appear in a text editor with word wrapping turned on.
       If these line breaks cause you problems when you type a script listing into a docu-
       ment yourself, I encourage you to access the corresponding listing on the CD-ROM
       to see how it should look when you type it.

       As soon as you reach Part III of this book, you won’t likely go for more than a page
       before reading about an object model or language feature that requires a specific min-
       imum version of one browser or another. To make it easier to spot in the text when a
       particular browser and browser version is required, most browser references consist
       of a two-letter abbreviation and a version number. For example, IE5 means Internet
       Explorer 5 for any operating system; NN6 means Netscape Navigator 6 for any operat-
       ing system. If a feature is introduced with a particular version of browser and is sup-
       ported in subsequent versions, a plus symbol (+) follows the number. For example, a
       feature marked IE4+ indicates that Internet Explorer 4 is required at a minimum, but
       the feature is also available in IE5, IE5.5, and so on. Occasionally, a feature or some
       highlighted behavior applies to only one operating system. For example, a feature
       marked IE4+/Windows works only on Windows versions of Internet Explorer 4 or
       later. As points of reference, the first scriptable browsers were NN2, IE3/Windows,
       and IE3.01/Macintosh. Moreover, IE3 for Windows can be equipped with one of two
       versions of the JScript .dll file. A reference to the earlier version is cited as IE3/J1,
       while the later version is cited as IE3/J2. You will see this notation primarily in the
       compatibility charts throughout the reference chapters.

Note          Tip          Caution        Note, Tip, and Caution icons occasionally appear in
                                          the book to flag important points.



On the      On the CD-ROM icons point you to useful examples and code listings found on
CD-ROM
            this book’s companion CD-ROM.
Acknowledgments
 B      efore 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 appre-
 ciated. Now it’s time to get down to the fun of learning JavaScript. Enjoy!
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
Contents
 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
      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 . . . . . . . 11
      Leapfrog . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      Duck and Cover . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      Compatibility Issues Today . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
      Developing a Scripting Strategy        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16

 Chapter 3: Your First JavaScript Script . . . . . . . . . . . . . . . . . . . 19
      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                                                                                                           29
 Chapter 4: Browser and Document Objects . . . . . . . . . . . . . . CD-1
      Scripts Run the Show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-1
      JavaScript in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-2
xxiv   JavaScript Bible, Gold Edition



                 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 . . . . . . . . . . . . . . CD-23
                 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 . . . . . . . . . . . CD-35
                 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 . . . . . . . . . . . CD-47
                 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 . . . . . . . . . . . . . CD-61
                 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
Contents         xxv

 Chapter 9: Forms and Form Elements . . . . . . . . . . . . . . . . . CD-75
      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 . . . . . . . . . . . . . . . . . CD-89
      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 . . . . . . . CD-99
      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 . . . . . . . . . . . . . . CD-109
      The Image Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-109
      More Dynamism in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . CD-115
      Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-116


Part III: Document Objects Reference                                                                                                                   35
 Chapter 13: JavaScript Essentials . . . . . . . . . . . . . . . . . . . . . 37
      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
xxvi   JavaScript Bible, Gold Edition



            Chapter 14: Document Object Model Essentials . . . . . . . . . . . . 61
                 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 . . . . . . . . . . . . . . 105
                 Generic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

            Chapter 16: Window and Frame Objects . . . . . . . . . . . . . . . . 217
                 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 . . . . . . . . . . . . . . . . 321
                 Location Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
                 History Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

            Chapter 18: The Document and Body Objects . . . . . . . . . . . . . 339
                 Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
                 BODY Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

            Chapter 19: Body Text Objects . . . . . . . . . . . . . . . . . . . . . . 409
                 BLOCKQUOTE and Q Element Objects                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   410
                 BR Element Object . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   411
                 FONT Element Object . . . . . . . . .                    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   412
                 H1...H6 Element Objects . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   414
Contents          xxvii

     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 . . . . . . . . . . . . . . . . . . . 473
     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 . . . . . . . . . . . . . . . . . . 493
     Anchor, Link, and A Element Objects . . . . . . . . . . . . . . . . . . . . . . 493

Chapter 22: Image, Area, and Map Objects . . . . . . . . . . . . . . . 505
     Image and IMG Element Objects . . . . . . . . . . . . . . . . . . . . . . . . 505
     AREA Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
     MAP Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

Chapter 23: The Form and Related Objects . . . . . . . . . . . . . . . 527
     The Form in the Object Hierarchy . . .                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   527
     FORM Object . . . . . . . . . . . . . . .                    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   528
     FIELDSET and LEGEND Element Objects                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   545
     LABEL Element Object . . . . . . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   547

Chapter 24: Button Objects . . . . . . . . . . . . . . . . . . . . . . . . 549
     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
xxviii   JavaScript Bible, Gold Edition



              Chapter 25: Text-Related Form Objects . . . . . . . . . . . . . . . . . 569
                   Text Input Object . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   570
                   Password Input Object . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   582
                   Hidden Input Object . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   582
                   TEXTAREA Element Object         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   583

              Chapter 26: Select, Option, and FileUpload Objects . . . . . . . . . 589
                   SELECT Element Object . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   589
                   OPTION Element Object . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   607
                   OPTGROUP Element Object         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   609
                   File Input Element Object .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   610

              Chapter 27: Table and List Objects . . . . . . . . . . . . . . . . . . . . 613
                   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 . . . . . 665
                   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 . . . . . . . . . . . . . . . . . . . . . . . . . 711
                   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
Contents          xxix

 Chapter 30: Style Sheet and Style Objects . . . . . . . . . . . . . . . 777
      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 . . . . . . . . . . . . . . . . . . . . . . 855
      What Is a Layer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
      NN4 Layer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
      Positioned Elements in the Modern DOM . . . . . . . . . . . . . . . . . . . 874

 Chapter 32: Embedded Objects . . . . . . . . . . . . . . . . . . . . . . 901
      APPLET Element Object . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   902
      OBJECT Element Object . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   907
      EMBED Element Object . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   913
      The Odd Case of the PARAM Element                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   917

 Chapter 33: XML Objects . . . . . . . . . . . . . . . . . . . . . . . . . . 919
      Elements and Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
      XML Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921


Part IV: JavaScript Core Language Reference                                                                                                          925
 Chapter 34: The String Object . . . . . . . . . . . . . . . . . . . . . . . 927
      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 . . . . . . . . 951
      Numbers in JavaScript      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   951
      Math Object . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   957
      Number Object . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   960
      Boolean Object . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   965
xxx   JavaScript Bible, Gold Edition



           Chapter 36: The Date Object . . . . . . . . . . . . . . . . . . . . . . . . 967
                Time Zones and GMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
                The Date Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
                Validating Date Entries in Forms . . . . . . . . . . . . . . . . . . . . . . . . 983

           Chapter 37: The Array Object . . . . . . . . . . . . . . . . . . . . . . . 987
                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 . . . . . 1007
                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 . . . . . . 1033
                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 . . . . . . . . . . . . . . . . . . . . 1069
                Operator Categories . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1069
                Comparison Operators . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1070
                Equality of Disparate Data Types       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1072
                Connubial Operators . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1073
                Assignment Operators . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1076
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript
Biblia javascript

Weitere ähnliche Inhalte

Andere mochten auch (13)

Wit
WitWit
Wit
 
RabbitHole
RabbitHoleRabbitHole
RabbitHole
 
Rabbithole
RabbitholeRabbithole
Rabbithole
 
Redlightwinter
RedlightwinterRedlightwinter
Redlightwinter
 
Persuasive Communication
Persuasive CommunicationPersuasive Communication
Persuasive Communication
 
Imk
ImkImk
Imk
 
007 01 138 tugas 2 basis_data
007 01 138 tugas 2 basis_data007 01 138 tugas 2 basis_data
007 01 138 tugas 2 basis_data
 
MLM Tips
MLM TipsMLM Tips
MLM Tips
 
MLM
MLMMLM
MLM
 
007 01 138 tugas1 basis data
007 01 138 tugas1 basis data007 01 138 tugas1 basis data
007 01 138 tugas1 basis data
 
00701138 tugas4 basisdata2
00701138 tugas4 basisdata200701138 tugas4 basisdata2
00701138 tugas4 basisdata2
 
Tourettes syndrome ppt
Tourettes syndrome pptTourettes syndrome ppt
Tourettes syndrome ppt
 
AWS IAM Access Key Rotation - Lambda Function
AWS IAM Access Key Rotation - Lambda FunctionAWS IAM Access Key Rotation - Lambda Function
AWS IAM Access Key Rotation - Lambda Function
 

Ähnlich wie Biblia javascript

Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
jbandi
 
Openness In The Era Of Social Web
Openness In The Era Of Social WebOpenness In The Era Of Social Web
Openness In The Era Of Social Web
Chris Messina
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
Dave Bouwman
 
Browser and Cloud - The Future of IDEs?
Browser and Cloud - The Future of IDEs?Browser and Cloud - The Future of IDEs?
Browser and Cloud - The Future of IDEs?
martinlippert
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
martinlippert
 
Your java script library
Your java script libraryYour java script library
Your java script library
jasfog
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
jbandi
 

Ähnlich wie Biblia javascript (20)

Java script introduction
Java script introductionJava script introduction
Java script introduction
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Openness In The Era Of Social Web
Openness In The Era Of Social WebOpenness In The Era Of Social Web
Openness In The Era Of Social Web
 
The Role Of Java Script
The Role Of Java ScriptThe Role Of Java Script
The Role Of Java Script
 
Java magazine january february 2017
Java magazine january february 2017Java magazine january february 2017
Java magazine january february 2017
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
 
JavaScript - Web Development Fundaments Part 2 - DeepDive Learning Academy
JavaScript - Web Development Fundaments Part 2 - DeepDive Learning AcademyJavaScript - Web Development Fundaments Part 2 - DeepDive Learning Academy
JavaScript - Web Development Fundaments Part 2 - DeepDive Learning Academy
 
Browser and Cloud - The Future of IDEs?
Browser and Cloud - The Future of IDEs?Browser and Cloud - The Future of IDEs?
Browser and Cloud - The Future of IDEs?
 
WT Module-3.pptx
WT Module-3.pptxWT Module-3.pptx
WT Module-3.pptx
 
wt mod3.pdf
wt mod3.pdfwt mod3.pdf
wt mod3.pdf
 
Javascript everywhere
Javascript everywhereJavascript everywhere
Javascript everywhere
 
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript librariesJazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
 
Foolangjs
FoolangjsFoolangjs
Foolangjs
 
Seven Steps To Better JavaScript
Seven Steps To Better JavaScriptSeven Steps To Better JavaScript
Seven Steps To Better JavaScript
 
WebAssembly with Rust
WebAssembly with RustWebAssembly with Rust
WebAssembly with Rust
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
 
Your java script library
Your java script libraryYour java script library
Your java script library
 
Js il.com
Js il.comJs il.com
Js il.com
 
React Js vs Node Js_ Which Framework to Choose for Your Next Web Application
React Js vs Node Js_ Which Framework to Choose for Your Next Web ApplicationReact Js vs Node Js_ Which Framework to Choose for Your Next Web Application
React Js vs Node Js_ Which Framework to Choose for Your Next Web Application
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
 

Kürzlich hochgeladen

Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Kürzlich hochgeladen (20)

Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Magic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptxMagic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 

Biblia javascript

  • 1. Turn in: .75 Board: 7.0625 .4375 VISIBLE SPINE = 2.375 .4375 Board: 7.0625 Turn in: .75 The Ultimate Guide to JavaScript for Professionals GOLD EDITION G O L D E D I T I O N Featuring 15 bonus chapters with expanded coverage of data validation, debugging, plug-ins, security, and more, “I highly recommend Danny Goodman’s Advance your JavaScript JavaScript Bible.” JavaScript plus nine chapters on ready-to-use applications, this monumental reference is truly the most comprehensive and JavaScript skills with the most —Brendan Eich, creator of JavaScript useful guide to JavaScript available today. Writing with his trademark clarity and verve, leading JavaScript comprehensive resource authority Danny Goodman covers everything from Cascading Style Sheets and Document Object Models to available XML data — and gives you all the tools you need to harness the full power of client-side JavaScript. Conquer high-end Encyclopedic coverage of “I continue to use the book [JavaScript Bible] on a daily basis and would be lost without it.” scripting challenges using JavaScript and DOMs —Mike Warner, Founder, Oak Place Publications the latest techniques • Master JavaScript and DOM concepts with Danny’s “Whether you are a professional or a beginner, exclusive interactive workbench: The Evaluator Optimize scripts for this is a great book to get.” —Brant Mutch, Web Application Developer, Internet Explorer 5.5 • Learn state-of-the-art debugging and tracing tricks Wells Fargo Card Services, Inc. and Netscape Navigator 6 • Apply the latest JavaScript 1.5 exception handling and custom object techniques • Implement cross-browser Dynamic HTML applications for MSIE 5.5 and Navigator 6 Turn plain Features 15 pages into bonus chapters The Definitive • Embed a universal sound plug-in controller in your interactive JavaScript Guide pages applications — Over 175,000 • Develop deployment strategies that best suit Copies in Print JavaScript your content goals and target audience ® CD-ROM includes: ® • A searchable e-version of the book • Nearly 300 ready-to-run scripts from the book • Printable version of the JavaScript and Browser GOODMAN Object Quick Reference • Plus the full version of WebSpice Objects, a www.hungr yminds.com Bible demo of BBEdit, and TextPad shareware Bible System Requirements: $ 69.99 USA Reader Level: Shelving Category: PC running Windows 95 or later, Windows $104.99 Canada Beginning to Advanced Web Development/JavaScript NT 4 or later; Power Macintosh running £ 55.99 UK incl. VAT Hundreds of Example System 7.6 or later. See Appendix E for Scripts on CD-ROM! details and complete system requirements. ISBN 0-7645-4718-6 CD-ROM *85 5 -ADAG e ,!7IA7G4-fehbi !:p;Q;T;t;t INSIDE! Nearly 300 Ready-to-Run Example Scripts and More Danny Goodman JavaScript pioneer and Consultant on CD-ROM! With a foreword by Brendan Eich, creator of JavaScript
  • 2. 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 program- ming 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
  • 3. “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
  • 4. JavaScript Bible, ® Gold Edition
  • 5.
  • 6. JavaScript Bible, ® Gold Edition Danny Goodman With a foreword by Brendan Eich, creator of JavaScript Best-Selling Books • Digital Downloads • e-Books • Answer Networks • e-Newsletters • Branded Web Sites • e-Learning Indianapolis, IN ✦ Cleveland, OH ✦ New York, NY
  • 7. JavaScript® Bible, Gold Edition Contemporanea de Ediciones for Venezuela; by Published by Express Computer Distributors for the Caribbean and Hungry Minds, Inc. West Indies; by Micronesia Media Distributor, Inc. for 909 Third Avenue Micronesia; by Chips Computadoras S.A. de C.V. for New York, NY 10022 Mexico; by Editorial Norma de Panama S.A. for www.hungryminds.com Panama; by American Bookshops for Finland. Copyright © 2001 Danny Goodman. All rights For general information on Hungry Minds’ products reserved. No part of this book, including interior and services please contact our Customer Care design, cover design, and icons, may be reproduced department; within the U.S. at 800-762-2974, outside or transmitted in any form, by any means (electronic, the U.S. at 317-572-3993 or fax 317-572-4002. photocopying, recording, or otherwise) without the For sales inquiries and resellers information, prior written permission of the publisher. including discounts, premium and bulk quantity sales Library of Congress Control Number: 2001090713 and foreign language translations please contact our Customer Care department at 800-434-3422, fax ISBN: 0-7645-4718-6 317-572-4002 or write to Hungry Minds, Inc., Attn: Printed in the United States of America Customer Care department, 10475 Crosspoint 10 9 8 7 6 5 4 3 2 1 Boulevard, Indianapolis, IN 46256. 1P/RV/QW/QR/IN For information on licensing foreign or domestic Distributed in the United States by Hungry Minds, Inc. rights, please contact our Sub-Rights Customer Care Distributed by CDG Books Canada Inc. for Canada; by department at 212-884-5000. Transworld Publishers Limited in the United For information on using Hungry Minds’ products Kingdom; by IDG Norge Books for Norway; by IDG and services in the classroom or for ordering Sweden Books for Sweden; by IDG Books Australia examination copies, please contact our Educational Publishing Corporation Pty. Ltd. for Australia and Sales department at 800-434-2086 or fax 317-572-4005. New Zealand; by TransQuest Publishers Pte Ltd. for For press review copies, author interviews, or other Singapore, Malaysia, Thailand, Indonesia, and Hong publicity information, please contact our Public Kong; by Gotop Information Inc. for Taiwan; by ICG Relations department at 317-572-3168 or fax Muse, Inc. for Japan; by Intersoft for South Africa; by 317-572-4168. Eyrolles for France; by International Thomson For authorization to photocopy items for corporate, Publishing for Germany, Austria, and Switzerland; by personal, or educational use, please contact Distribuidora Cuspide for Argentina; by LR Copyright Clearance Center, 222 Rosewood Drive, International for Brazil; by Galileo Libros for Chile; by Danvers, MA 01923, or fax 978-750-4470. Ediciones ZETA S.C.R. Ltda. for Peru; by WS Computer Publishing Corporation, Inc., for the Philippines; by LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND AUTHOR HAVE USED THEIR BEST EFFORTS IN PREPARING THIS BOOK. THE PUBLISHER AND AUTHOR MAKE NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE CONTENTS OF THIS BOOK AND SPECIFICALLY DISCLAIM ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. THERE ARE NO WARRANTIES WHICH EXTEND BEYOND THE DESCRIPTIONS CONTAINED IN THIS PARAGRAPH. NO WARRANTY MAY BE CREATED OR EXTENDED BY SALES REPRESENTATIVES OR WRITTEN SALES MATERIALS. THE ACCURACY AND COMPLETENESS OF THE INFORMATION PROVIDED HEREIN AND THE OPINIONS STATED HEREIN ARE NOT GUARANTEED OR WARRANTED TO PRODUCE ANY PARTICULAR RESULTS, AND THE ADVICE AND STRATEGIES CONTAINED HEREIN MAY NOT BE SUITABLE FOR EVERY INDIVIDUAL. NEITHER THE PUBLISHER NOR AUTHOR SHALL BE LIABLE FOR ANY LOSS OF PROFIT OR ANY OTHER COMMERCIAL DAMAGES, INCLUDING BUT NOT LIMITED TO SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR OTHER DAMAGES. Trademarks: JavaScript is a registered trademark or trademark of Sun Microsystems, Inc. All other trademarks are property of their respective owners. Hungry Minds, Inc. is not associated with any product or vendor mentioned in this book. is a trademark of Hungry Minds, Inc.
  • 8. 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.
  • 9. Credits Acquisitions Editor Quality Control Technicians Debra Williams Cauley Laura Albert Joel Draper Project Editor Andy Hollandbeck Neil Romanosky Susan Moritz Technical Editor Permissions Editor David Wall Laura Moss Copy Editors Media Development Specialist Jerelind Charles Greg Stephens Victoria Lee O’Malley Media Development Coordinator Proof Editor Marisa Pearman Cordelia Heaney Book Designer Editorial Manager Kurt Krames Colleen Totz Proofreading Project Coordinators TECHBOOKS Production Services Cindy Phipps Regina Snyder Indexer Johnna VanHoose Dinse Graphics and Production Specialists Sean Decker Cover Illustrator John Greenough Kate Shaw LeAndra Johnson Stephanie Johnson Gabriele McCann Jill Piscitelli Heather Pope Ron Terry Erin Zeltner
  • 10. Foreword A s JavaScript’s creator, I would like to say a few words about where JavaScript has been, where it is going, and how the book you’re holding will help you to make the most of the language. JavaScript was born out of a desire to let HTML authors write scripts directly in their documents. This may seem obvious now, but in the spring of 1995 it was novel and more than a little at odds with both the conventional wisdom (that HTML should describe static document structure only) and the Next Big Thing (Java applets, which were hyped as the one true way to enliven and extend Web pages). Once I got past these contentions, JavaScript quickly shaped up along the following lines: ✦ “Java-lite” syntax. Although the “natural language” syntax of HyperTalk was fresh in my mind after a friend lent me The Complete HyperCard Handbook by some fellow named Goodman, the Next Big Thing weighed heavier, especially in light of another goal: scripting Java applets. If the scripting language resembled Java, then those pro- grammers who made the jump from JavaScript to Java would welcome similarities in syntax. But insisting on Java’s class and type declarations, or on a semicolon after each statement when a line ending would do, was out of the question — scripting for most people is about writing short snippets of code, quickly and without fuss. ✦ Events for HTML elements. Buttons should have onClick event handlers. Documents load and unload from windows, so windows should have onLoad and onUnload handlers. Users and scripts submit forms: thus the onSubmit handler. Although not initially as flexible as HyperCard’s messages (whose handlers inspired the onEvent naming convention), JavaScript events let HTML authors take control of user interaction from remote servers and respond quickly to user gestures and browser actions. With the adoption of the W3C DOM Level 2 event handling recom- mendations, JavaScript in modern browsers has fully flexible control over events. ✦ Objects without classes. The Self programming language proved the notion of prototype-based inheritance. For JavaScript, I wanted a single prototype per object (for simplicity and efficiency), based by default on the function called using the new operator (for consonance with Java). To avoid distinguishing constructors from methods from functions, all functions receive the object naming them as the prop- erty that was called, in the this parameter. Although prototypes didn’t appear until Navigator 3, they were prefigured in Version 2 by quoted text being treated as an object (the String object prototype, to which users could attach methods). ✦ Generated HTML. Embedding JavaScript in HTML gave rise to a thought: Let the script speak HTML, as if the emitted text and markup were loaded in place of the script itself. The possibilities went beyond automating current or last-modified dates, to computing whole trees of tables where all the repeated structure was rolled up in a scripted loop, while the varying contents to be tabulated came in min- imal fashion from JavaScript objects forming a catalog or mini-database.
  • 11. x JavaScript Bible, Gold Edition At first, I thought JavaScript would most often find use in validating input to HTML forms. But before long, I was surprised to see how many Web designers devised compelling applications by way of script-generated HTML and JavaScript objects. It became clear from user demonstration and feedback that Web designers sought to build significant applications quickly and effectively with just a few images, HTML, and JavaScript. Eventually they demanded that the browser support what is now known as “Dynamic HTML” (one fun link: http://www.javascript-games.org/). As legions of Web authors embraced the authoring power of JavaScript, they, in turn, demonstrated the crucial advantages of a scripting environment over old-school application development. Not only were the HTML and JavaScript languages com- paratively easy to use, but development did not require the programming expertise needed to light all pixels and handle all events as in a big, traditional application. The primacy of JavaScript on the Web today vindicates our early belief in the value of a scripting language for HTML authors. By keeping the “pixel-lighting” bar low, HTML with images has made Web designers out of millions of people. By keeping the “event-handling” bar low, JavaScript has helped many thousands of those designers become programmers. Perhaps the ultimate example of Web develop- ment’s convergence with application development is the Mozilla browser, wherein all of the user-interface and even some custom widgets and modular components are implemented entirely using JavaScript, Cascading Style Sheets (CSS), custom XML-based markup languages, and images. JavaScript is also a general language, useful apart from HTML and XML. It has been embedded in servers, authoring tools, browser plug-ins, and other kinds of browsers (for such things as 3D graphical worlds). Its international standard, ECMA-262 (ISO 16262), has advanced to a Third Edition. But compared with languages such as Perl and even Java, it is still relatively young. Work toward a Fourth Edition of the lan- guage, supporting optional types, classes, and versioning facilities, progresses within the ECMA technical committee (see the “JS2” proposal to the ECMA technical committee documented at http://www.mozilla.org/js/language/js20/). It is clear to me that JavaScript would not have survived without a creative, loyal, and patient community of developers; I owe them each a huge debt of thanks. Those developers who took up the beta releases of Navigator 2 and disseminated vital workarounds and feature requests by e-mail and net-news are the language’s godparents. Developer support and feedback continue to make JavaScript the eclectic, rambunctious success it is. The book in your hands compiles thousands of those “developer miles” with the insight of an expert guide and teacher. Danny didn’t know at the time how much inspi- ration I found in his HyperCard book, but it was on my desk throughout the develop- ment of JavaScript in 1995. His energy, compassion, and clear prose helped me keep the goal of “a language for all” in mind. It is enormously gratifying to write the foreword to the Gold edition of this book, which has earned so many “satisfied reader miles.” I highly recommend Danny Goodman’s JavaScript Bible to anyone who wants to learn JavaScript, and especially to those HTML authors who’ve so far written only a few scripts or programs — you’re in for a lifetime of fun on the “scripting road” with a trusty guide at your side. — Brendan Eich The Mozilla Organization (http://www.mozilla.org)
  • 12. Preface F or 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 grow- ing 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 ques- tions, 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 pas- sion, 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 ref- erence 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 lan- guage (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
  • 13. xii JavaScript Bible, Gold Edition arrived on the scene. That’s why Chapter 2 is devoted to addressing challenges fac- ing 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 fol- low 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 mouse- rollover image swapping effect that is popular in a lot of Web pages these days. On the You can find all of the Part II chapters on the CD-ROM that accompanies this CD-ROM 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 ref- erence chapters, a compatibility chart indicates the browser version that supports each object and object feature. One chapter in particular, Chapter 15, contains ref- erence 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 naviga- tion 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 refer- ence 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 valida- tion and Chapter 44’s coverage of blending Java applets and plug-ins into pages.
  • 14. Preface xiii 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 cross- browser 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 informa- tion. 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. CD-ROM The accompanying CD-ROM contains over 300 ready-to-run HTML documents that serve as examples of most of the document object model and JavaScript vocabu- lary words in Parts III and IV. You can run these examples with your JavaScript- enabled browser, but be sure to use the index.html page in the listings folder as a gateway to running the listings. This page shows you the browsers that are compat- ible with each example listing. I could have provided you with humorous little sam- ple code fragments out of context, but I think that seeing full-fledged HTML documents (simple though they may be) for employing these concepts is impor- tant. I intentionally omitted the script listings from the tutorial part (Part II) of this book to encourage you to type the scripts. I believe you learn a lot, even by aping listings from the book, as you get used to the rhythms of typing scripts in docu- ments. You also find listings from Parts I and V on the CD-ROM. The CD-ROM holds another valuable resource: dozens and dozens of Example sec- tions for Parts III and IV, which are compiled in Appendix F. Many of these sections reveal detailed descriptions of HTML listings that illustrate a particular object model or language feature. Even more Example sections invite you to try out an object model or language feature with the help of an interactive workbench, called The Evaluator — a JavaScript Bible exclusive! You see instant results and quickly learn how the feature works. The Quick Reference from Appendix A is in .pdf format on the CD-ROM for you to print out and assemble as a handy reference, if desired. Adobe Acrobat Reader is also included on the CD-ROM so that you can read this .pdf file. Finally, the text of the book is in a .pdf file format on the CD-ROM for easy searching.
  • 15. xiv JavaScript Bible, Gold Edition 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 espe- cially 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 instruc- tions: Go three blocks that way; turn left here; turn right there. Amid these instruc- tions 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 stop- light 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 instruc- tions. Such rules are called syntax, the same as in a living language. Because com- puters generally are dumb electronic hulks, they aren’t very forgiving if you don’t
  • 16. Preface xv 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 lan- guages. If the syntax isn’t perfect (or at least within the language’s range of knowl- edge 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 learn- ing 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 pro- gram first runs, a great deal of code is dedicated to setting up the visual environ- ment. 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 con- sidered 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 acti- vates 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.
  • 17. xvi JavaScript Bible, Gold Edition 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 pro- gramming 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 exper- tise 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 decla- rations, however, are quite different, because JavaScript is a loosely typed lan- guage. 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 pass- ing. 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.
  • 18. Preface xvii More sophisticated scripting, such as that found in Toolbook or HyperCard, pre- pares 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 environ- ment and planning an application easier to accomplish. Formatting and Naming Conventions The script listings and words in this book are presented in a monospace font to set them apart from the rest of the text. Because of restrictions in page width, lines of script listings may, from time to time, break unnaturally. In such cases, the remainder of the script appears in the following line, flush with the left margin of the listing, just as they would appear in a text editor with word wrapping turned on. If these line breaks cause you problems when you type a script listing into a docu- ment yourself, I encourage you to access the corresponding listing on the CD-ROM to see how it should look when you type it. As soon as you reach Part III of this book, you won’t likely go for more than a page before reading about an object model or language feature that requires a specific min- imum version of one browser or another. To make it easier to spot in the text when a particular browser and browser version is required, most browser references consist of a two-letter abbreviation and a version number. For example, IE5 means Internet Explorer 5 for any operating system; NN6 means Netscape Navigator 6 for any operat- ing system. If a feature is introduced with a particular version of browser and is sup- ported in subsequent versions, a plus symbol (+) follows the number. For example, a feature marked IE4+ indicates that Internet Explorer 4 is required at a minimum, but the feature is also available in IE5, IE5.5, and so on. Occasionally, a feature or some highlighted behavior applies to only one operating system. For example, a feature marked IE4+/Windows works only on Windows versions of Internet Explorer 4 or later. As points of reference, the first scriptable browsers were NN2, IE3/Windows, and IE3.01/Macintosh. Moreover, IE3 for Windows can be equipped with one of two versions of the JScript .dll file. A reference to the earlier version is cited as IE3/J1, while the later version is cited as IE3/J2. You will see this notation primarily in the compatibility charts throughout the reference chapters. Note Tip Caution Note, Tip, and Caution icons occasionally appear in the book to flag important points. On the On the CD-ROM icons point you to useful examples and code listings found on CD-ROM this book’s companion CD-ROM.
  • 19.
  • 20. Acknowledgments B efore 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 appre- ciated. Now it’s time to get down to the fun of learning JavaScript. Enjoy!
  • 21. 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
  • 22. 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
  • 23.
  • 24. Contents 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 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 . . . . . . . 11 Leapfrog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Duck and Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Compatibility Issues Today . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Developing a Scripting Strategy . . . . . . . . . . . . . . . . . . . . . . . . . 16 Chapter 3: Your First JavaScript Script . . . . . . . . . . . . . . . . . . . 19 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 29 Chapter 4: Browser and Document Objects . . . . . . . . . . . . . . CD-1 Scripts Run the Show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-1 JavaScript in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-2
  • 25. xxiv JavaScript Bible, Gold Edition 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 . . . . . . . . . . . . . . CD-23 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 . . . . . . . . . . . CD-35 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 . . . . . . . . . . . CD-47 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 . . . . . . . . . . . . . CD-61 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
  • 26. Contents xxv Chapter 9: Forms and Form Elements . . . . . . . . . . . . . . . . . CD-75 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 . . . . . . . . . . . . . . . . . CD-89 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 . . . . . . . CD-99 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 . . . . . . . . . . . . . . CD-109 The Image Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-109 More Dynamism in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . CD-115 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CD-116 Part III: Document Objects Reference 35 Chapter 13: JavaScript Essentials . . . . . . . . . . . . . . . . . . . . . 37 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
  • 27. xxvi JavaScript Bible, Gold Edition Chapter 14: Document Object Model Essentials . . . . . . . . . . . . 61 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 . . . . . . . . . . . . . . 105 Generic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Chapter 16: Window and Frame Objects . . . . . . . . . . . . . . . . 217 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 . . . . . . . . . . . . . . . . 321 Location Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 History Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Chapter 18: The Document and Body Objects . . . . . . . . . . . . . 339 Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 BODY Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Chapter 19: Body Text Objects . . . . . . . . . . . . . . . . . . . . . . 409 BLOCKQUOTE and Q Element Objects . . . . . . . . . . . . . . . . . . . . . 410 BR Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 FONT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 H1...H6 Element Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
  • 28. Contents xxvii 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 . . . . . . . . . . . . . . . . . . . 473 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 . . . . . . . . . . . . . . . . . . 493 Anchor, Link, and A Element Objects . . . . . . . . . . . . . . . . . . . . . . 493 Chapter 22: Image, Area, and Map Objects . . . . . . . . . . . . . . . 505 Image and IMG Element Objects . . . . . . . . . . . . . . . . . . . . . . . . 505 AREA Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 MAP Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Chapter 23: The Form and Related Objects . . . . . . . . . . . . . . . 527 The Form in the Object Hierarchy . . . . . . . . . . . . . . . . . . . . . . . 527 FORM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 FIELDSET and LEGEND Element Objects . . . . . . . . . . . . . . . . . . . . 545 LABEL Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Chapter 24: Button Objects . . . . . . . . . . . . . . . . . . . . . . . . 549 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
  • 29. xxviii JavaScript Bible, Gold Edition Chapter 25: Text-Related Form Objects . . . . . . . . . . . . . . . . . 569 Text Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 Password Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Hidden Input Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 TEXTAREA Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Chapter 26: Select, Option, and FileUpload Objects . . . . . . . . . 589 SELECT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 OPTION Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 OPTGROUP Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 File Input Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 Chapter 27: Table and List Objects . . . . . . . . . . . . . . . . . . . . 613 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 . . . . . 665 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 . . . . . . . . . . . . . . . . . . . . . . . . . 711 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
  • 30. Contents xxix Chapter 30: Style Sheet and Style Objects . . . . . . . . . . . . . . . 777 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 . . . . . . . . . . . . . . . . . . . . . . 855 What Is a Layer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855 NN4 Layer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856 Positioned Elements in the Modern DOM . . . . . . . . . . . . . . . . . . . 874 Chapter 32: Embedded Objects . . . . . . . . . . . . . . . . . . . . . . 901 APPLET Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 OBJECT Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907 EMBED Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913 The Odd Case of the PARAM Element . . . . . . . . . . . . . . . . . . . . . 917 Chapter 33: XML Objects . . . . . . . . . . . . . . . . . . . . . . . . . . 919 Elements and Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919 XML Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 Part IV: JavaScript Core Language Reference 925 Chapter 34: The String Object . . . . . . . . . . . . . . . . . . . . . . . 927 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 . . . . . . . . 951 Numbers in JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951 Math Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 Number Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 Boolean Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
  • 31. xxx JavaScript Bible, Gold Edition Chapter 36: The Date Object . . . . . . . . . . . . . . . . . . . . . . . . 967 Time Zones and GMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967 The Date Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969 Validating Date Entries in Forms . . . . . . . . . . . . . . . . . . . . . . . . 983 Chapter 37: The Array Object . . . . . . . . . . . . . . . . . . . . . . . 987 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 . . . . . 1007 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 . . . . . . 1033 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 . . . . . . . . . . . . . . . . . . . . 1069 Operator Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069 Comparison Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 Equality of Disparate Data Types . . . . . . . . . . . . . . . . . . . . . . . 1072 Connubial Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 Assignment Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076