1. Trang chủ
  2. » Giáo án - Bài giảng

javascript bible - gold edition (2001)

2,2K 8,2K 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề JavaScript Bible - Gold Edition (2001)
Tác giả Danny Goodman
Trường học Not specified
Chuyên ngành Web Development/JavaScript
Thể loại sách hướng dẫn / tài liệu tham khảo
Năm xuất bản 2001
Thành phố Không rõ
Định dạng
Số trang 2.177
Dung lượng 34,73 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

See Appendix E for • Master JavaScript and DOM concepts with Danny’s exclusive interactive workbench: The Evaluator • Learn state-of-the-art debugging and tracing tricks • Apply the late

Trang 1

Advance your JavaScript skills with the most comprehensive resource available

Conquer high-end scripting challenges using the latest techniques Optimize scripts for Internet Explorer 5.5 and Netscape Navigator 6

G O L D E D I T I O N

Bible GOODMAN

G O L D

E D I T I O N

CD-ROM INSIDE!

Nearly 300 Ready-to-Run Example Scripts and More

on CD-ROM!

The Ultimate Guide to JavaScript for Professionals

Featuring 15 bonus chapters with expanded coverage of data validation, debugging, plug-ins, security, and more, plus nine chapters on ready-to-use applications, this monumental reference is truly the most comprehensive and useful guide to JavaScript available today Writing with his trademark clarity and verve, leading JavaScript authority Danny Goodman covers everything from Cascading Style Sheets and Document Object Models to XML data — and gives you all the tools you need to harness the full power of client-side JavaScript.

Hundreds of Example Scripts on CD-ROM!

PC running Windows 95 or later, Windows

NT 4 or later; Power Macintosh running System 7.6 or later See Appendix E for

• Master JavaScript and DOM concepts with Danny’s exclusive interactive workbench: The Evaluator

• Learn state-of-the-art debugging and tracing tricks

• 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

• Embed a universal sound plug-in controller in your pages

• Develop deployment strategies that best suit your content goals and target audience

— Over 175,000 Copies in Print

JavaScript pioneer and Consultant

®

With a foreword by Brendan Eich, creator of JavaScript

CD-ROM includes:

Object Quick Reference

demo of BBEdit, and TextPad shareware

“I continue to use the book [JavaScript Bible]

on a daily basis and would be lost without it.”

—Mike Warner, Founder, Oak Place Publications

“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.

Turn plain pages into interactive applications

®

Features 15bonus chapters

“I highly recommend Danny Goodman’s

JavaScript Bible.”

—Brendan Eich, creator of JavaScript

Trang 2

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 todevelop advanced Web sites Mr Goodman did an excellent job of organizing thisbook 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

— 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 JavaScriptbook 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 ming block!”

program-— 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

Trang 3

“I continue to use the book on a daily basis and would be lost without it.”

— Mike Warner, Founder, Oak Place Productions

quite a few).”

— Robert J Mirro, Independent Consultant, RJM Consulting

Trang 4

JavaScript Bible,

Gold Edition

Trang 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

Trang 7

www.hungryminds.com

Copyright © 2001 Danny Goodman All rights

reserved No part of this book, including interior

design, cover design, and icons, may be reproduced

or transmitted in any form, by any means (electronic,

photocopying, recording, or otherwise) without the

prior written permission of the publisher.

Library of Congress Control Number: 2001090713

ISBN: 0-7645-4718-6

Printed in the United States of America

10 9 8 7 6 5 4 3 2 1

1P/RV/QW/QR/IN

Distributed in the United States by Hungry Minds, Inc.

Distributed by CDG Books Canada Inc for Canada; by

Transworld Publishers Limited in the United

Kingdom; by IDG Norge Books for Norway; by IDG

Sweden Books for Sweden; by IDG Books Australia

Publishing Corporation Pty Ltd for Australia and

New Zealand; by TransQuest Publishers Pte Ltd for

Singapore, Malaysia, Thailand, Indonesia, and Hong

Kong; by Gotop Information Inc for Taiwan; by ICG

Muse, Inc for Japan; by Intersoft for South Africa; by

Eyrolles for France; by International Thomson

Publishing for Germany, Austria, and Switzerland; by

Distribuidora Cuspide for Argentina; by LR

International for Brazil; by Galileo Libros for Chile; by

Ediciones ZETA S.C.R Ltda for Peru; by WS Computer

Publishing Corporation, Inc., for the Philippines; by

Panama; by American Bookshops for Finland For general information on Hungry Minds’ products and services please contact our Customer Care department; within the U.S at 800-762-2974, outside the U.S at 317-572-3993 or fax 317-572-4002

For sales inquiries and resellers information, including discounts, premium and bulk quantity sales and foreign language translations please contact our Customer Care department at 800-434-3422, fax 317-572-4002 or write to Hungry Minds, Inc., Attn: Customer Care department, 10475 Crosspoint Boulevard, Indianapolis, IN 46256

For information on licensing foreign or domestic rights, please contact our Sub-Rights Customer Care department at 212-884-5000.

For information on using Hungry Minds’ products and services in the classroom or for ordering examination copies, please contact our Educational Sales department at 800-434-2086 or fax 317-572-4005 For press review copies, author interviews, or other publicity information, please contact our Public Relations department at 317-572-3168 or fax 317-572-4168.

For authorization to photocopy items for corporate, personal, or educational use, please contact Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, or fax 978-750-4470.

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.

Trang 8

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 teachersaround the world To help keep his finger on the pulse of real-world programmingchallenges, Goodman frequently lends his touch as consulting programmer anddesigner to leading-edge World Wide Web and intranet sites from his home base inthe San Francisco area

Trang 9

Debra Williams Cauley

Trang 10

As 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 tomake the most of the language

JavaScript was born out of a desire to let HTML authors write scripts directly in theirdocuments This may seem obvious now, but in the spring of 1995 it was novel andmore than a little at odds with both the conventional wisdom (that HTML shoulddescribe static document structure only) and the Next Big Thing (Java applets, whichwere hyped as the one true way to enliven and extend Web pages) Once I got pastthese 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 anothergoal: scripting Java applets If the scripting language resembled Java, then those pro-grammers who made the jump from JavaScript to Java would welcome similarities insyntax But insisting on Java’s class and type declarations, or on a semicolon aftereach statement when a line ending would do, was out of the question — scripting formost people is about writing short snippets of code, quickly and without fuss

✦ Events for HTML elements Buttons should have onClickevent handlers.Documents load and unload from windows, so windows should have onLoad andonUnload handlers Users and scripts submit forms: thus the onSubmit handler.Although not initially as flexible as HyperCard’s messages (whose handlers inspiredthe onEvent naming convention), JavaScript events let HTML authors take control

of user interaction from remote servers and respond quickly to user gestures andbrowser 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 newoperator (for consonance with Java) To avoid distinguishing constructors frommethods from functions, all functions receive the object naming them as the prop-erty that was called, in the thisparameter Although prototypes didn’t appear untilNavigator 3, they were prefigured in Version 2 by quoted text being treated as anobject (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 thescript itself The possibilities went beyond automating current or last-modifieddates, to computing whole trees of tables where all the repeated structure wasrolled 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

Trang 11

At first, I thought JavaScript would most often find use in validating input to HTMLforms But before long, I was surprised to see how many Web designers devisedcompelling applications by way of script-generated HTML and JavaScript objects Itbecame clear from user demonstration and feedback that Web designers sought tobuild significant applications quickly and effectively with just a few images, HTML,and JavaScript Eventually they demanded that the browser support what is nowknown 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-schoolapplication development Not only were the HTML and JavaScript languages com-paratively easy to use, but development did not require the programming expertiseneeded 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 keepingthe “event-handling” bar low, JavaScript has helped many thousands of thosedesigners become programmers Perhaps the ultimate example of Web develop-ment’s convergence with application development is the Mozilla browser, whereinall of the user-interface and even some custom widgets and modular componentsare implemented entirely using JavaScript, Cascading Style Sheets (CSS), customXML-based markup languages, and images

JavaScript is also a general language, useful apart from HTML and XML It has beenembedded in servers, authoring tools, browser plug-ins, and other kinds of browsers(for such things as 3D graphical worlds) Its international standard, ECMA-262 (ISO16262), has advanced to a Third Edition But compared with languages such as Perland even Java, it is still relatively young Work toward a Fourth Edition of the lan-guage, supporting optional types, classes, and versioning facilities, progresseswithin the ECMA technical committee (see the “JS2” proposal to the ECMA technicalcommittee 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 disseminatedvital workarounds and feature requests by e-mail and net-news are the language’sgodparents Developer support and feedback continue to make JavaScript theeclectic, rambunctious success it is

The book in your hands compiles thousands of those “developer miles” with theinsight 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 thegoal of “a language for all” in mind It is enormously gratifying to write the foreword tothe 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 afew 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)

Trang 12

For nearly 20 years, I have written the books I wished had already been written

to help me learn or use a new technology Whenever possible, I like to get in atthe 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 tions, problems, and challenges facing scripters at all levels My goal is to help youavoid the same frustration and head scratching I and others have experiencedthrough multiple generations of scriptable browsers

ques-While previous editions of this book focused on the then-predominant NetscapeNavigator browser, the swing of the browser market share pendulum currentlyfavors Microsoft Internet Explorer At the same time, Netscape has accomplishedthe admirable task of reinventing its own browser in light of rapidly advancingindustry standards As a result of both of these trends, this massively revised andexpanded Gold edition treats both brands of browsers as equals as far as scriptersare concerned You hear my praise and dismay at various scripting features of bothbrowser families But empowering you to design and write good scripts is my pas-sion, regardless of browser Therefore, the book contains details about proprietaryand standard implementations to equip you to choose the development path thatbest fits your content’s audience If you detect any bias of mine throughout thisbook, 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 thelatest 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 documentobject model and core JavaScript language reference sections This new divisionshould 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 aresome details about the book’s structure

Part I

Part I of the book begins with a chapter that shows how JavaScript compares withJava and discusses its role within the rest of the World Wide Web The Web browserand scripting world have undergone significant changes since JavaScript first

Trang 13

arrived on the scene That’s why Chapter 2 is devoted to addressing challenges ing scripters who must develop applications for both single- and cross-platformbrowser audiences amid rapidly changing standards efforts Chapter 3 provides thefirst foray into JavaScript, where you get to write your first practical script.

fac-Part II

All of Part II is handed over to a tutorial for newcomers to JavaScript Nine lessonsprovide you with a gradual path through browser internals, basic programmingskills, 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 challengeyou 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 scriptingsimple pages right away while making it easier for you to understand the in-depthdiscussions 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

You can find all of the Part II chapters on the CD-ROM that accompanies thisbook

Part III

Part III, the largest section of the book, provides in-depth coverage of the documentobject models as implemented in browsers from the earliest days to today In all ref-erence chapters, a compatibility chart indicates the browser version that supportseach 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 helpyou 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 tion aids include guide words at the bottoms of most pages to indicate which objectand object feature is covered on the page

naviga-Part IV

Reference information for the core JavaScript language fills Part IV As with ence chapters of Part III, the JavaScript chapters display browser compatibilitycharts for every JavaScript language term Guide words at the bottoms of pageshelp you find a particular term quickly

refer-Part V

In Part V, I get down to the business of deploying JavaScript Here are the practicalaspects 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

On the

CD-ROM

Trang 14

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.htmlpage 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 secsec-tions

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

Trang 15

Prerequisites to Learning JavaScript

Although this book doesn’t demand that you have a great deal of programmingexperience behind you, the more Web pages you’ve created with HTML, the easieryou will find it to understand how JavaScript interacts with the familiar elementsyou 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, theJavaScript enhancements will be simple to digest

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

espe-The basic vocabulary of the current HTML standard should be part of your workingknowledge When we get to using frames, for instance, the focus is on how to scriptthese elements, not on designing pages with them Microsoft, Netscape, and otheronline 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 ofthis book must be daunting JavaScript may not be the easiest language in theworld to learn, but believe me, it’s a far cry from having to learn a full programminglanguage, such as Java or C Unlike developing a full-fledged monolithic application(such as the productivity programs you buy in the stores), JavaScript lets youexperiment by writing small snippets of program code to accomplish big things.The JavaScript interpreter built into every scriptable browser does a great deal ofthe technical work for you

Programming, at its most basic level, consists of nothing more than writing a series ofinstructions 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 thelight is green, then go; if the light is yellow, then floor it Occasionally, we must repeatsome operations several times (kind of like having to go around the block until aparking 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 toaccomplish 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 aprogramming 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

Trang 16

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

Trang 17

Making the transition from procedural to object-oriented programming may be themost 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 conceptclicked — a long, pensive walk helped — so many light bulbs went on inside myhead that I thought I might glow in the dark From then on, object orientationseemed 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++), JavaScriptshares many syntactical characteristics with C Programmers familiar with C will feelright at home Operator symbols, conditional structures, and repeat loops follow verymuch in the C tradition You will be less concerned about data types in JavaScript thanyou 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 willstill 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 forgrouping 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 thenext (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 arethe 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 productivityprograms is helpful for grasping a number of JavaScript’s concepts Perhaps themost 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 Excelthat performs a data transformation on daily figures that come in from a corporatefinancial report on another computer The macro is built into the Macro menu, andyou run it by choosing that menu item whenever a new set of figures arrives

Trang 18

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 fontto

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, and Caution icons occasionally appear inthe book to flag important points

On the CD-ROM icons point you to useful examples and code listings found on

this book’s companion CD-ROM

On the

CD-ROM

Caution Tip

Note

Trang 20

Before closing, I would like to acknowledge the contributions of many folks

who helped make this edition possible: Eric Krock, Tom Pixley, Vidur

Apparao, and especially the ever-patient, all-knowing Brendan Eich (Mozilla);Martin Honnen (Netscape DevEdge Champion); Tantek Celik (Microsoft’s Macintoshdevelopment 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 towhere 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 sente-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!

Trang 21

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

Trang 22

Part IV: JavaScript Core Language Reference 925

Chapter 34: The String Object 927Chapter 35: The Math, Number, and Boolean Objects 951Chapter 36: The Date Object 967Chapter 37: The Array Object 987Chapter 38: The Regular Expression and RegExp Objects 1007Chapter 39: Control Structures and Exception Handling 1033Chapter 40: JavaScript Operators 1069Chapter 41: Functions and Custom Objects 1093Chapter 42: Global Functions and Statements 1127

Part V: Putting JavaScript to Work 1147

Chapter 43: Data-Entry Validation 1149Chapter 44: Scripting Java Applets and Plug-ins 1177Chapter 45: Debugging Scripts 1217Chapter 46: Security and Netscape Signed Scripts 1239Chapter 47: Cross-Browser Dynamic HTML Issues 1259Chapter 48: Internet Explorer Behaviors 1273Chapter 49: Application: Tables and Calendars 1285Chapter 50: Application: A Lookup Table 1299Chapter 51: Application: A “Poor Man’s” Order Form 1311Chapter 52: Application: Outline-Style Table of Contents 1321Chapter 53: Application: Calculations and Graphics 1355Chapter 54: Application: Intelligent “Updated” Flags 1365Chapter 55: Application: Decision Helper 1375Chapter 56: Application: Cross-Browser DHTML Map Puzzle 1399Chapter 57: Application: Transforming XML Data Islands 1415

Part VI: Appendixes 1431

Appendix A: JavaScript and Browser Object Quick Reference 1433Appendix B: JavaScript Reserved Words 1447Appendix C: Answers to Tutorial Exercises 1449Appendix D: JavaScript and DOM Internet Resources 1465Appendix E: What’s on the CD-ROM 1469Appendix F: Examples from Parts III and IV CD-117Index 1473End User License Agreement 1512CD-ROM Installation Instructions 1516

Trang 24

Foreword ix Preface xi Acknowledgments xix

Chapter 1: JavaScript’s Role in the World Wide Web and Beyond 3

Competition on the Web 4Hypertext Markup Language (HTML) 4CGI Scripting 5

Of Helpers and Plug-ins 6Java Applets 7JavaScript: A Language for All 7JavaScript: The Right Tool for the Right Job 9

Chapter 2: Authoring Challenges Amid the Browser Wars 11

Leapfrog 12Duck and Cover 12Compatibility Issues Today 13Developing a Scripting Strategy 16

Chapter 3: Your First JavaScript Script 19

The Software Tools 19Setting Up Your Authoring Environment 20What Your First Script Will Do 23Entering Your First Script 24Examining the Script 25Have Some Fun 27

Chapter 4: Browser and Document Objects CD-1

Scripts Run the Show CD-1JavaScript in Action CD-2

Trang 25

The Document Object Model CD-8When a Document Loads CD-11Object References CD-14About the Dot Syntax CD-17What Defines an Object? CD-18Exercises CD-21

Chapter 5: Scripts and HTML Documents CD-23

Where Scripts Go in Documents CD-23JavaScript Statements CD-27When Script Statements Execute CD-28Viewing Script Errors CD-30Scripting versus Programming CD-32Exercises CD-33

Chapter 6: Programming Fundamentals, Part I CD-35

What Language Is This? CD-35Working with Information CD-35Variables CD-36Expressions and Evaluation CD-38Data Type Conversions CD-40Operators CD-42Exercises CD-44

Chapter 7: Programming Fundamentals, Part II CD-47

Decisions and Loops CD-47Control Structures CD-48About Repeat Loops CD-50Functions CD-51About Curly Braces CD-54Arrays CD-55Exercises CD-59

Chapter 8: Window and Document Objects CD-61

Document Objects CD-61The Window Object CD-62Window Properties and Methods CD-65The Location Object CD-68The History Object CD-69The Document Object CD-69The Link Object CD-73Exercises CD-73

Trang 26

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

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

Trang 27

Chapter 14: Document Object Model Essentials 61

The Object Model Hierarchy 61How Document Objects Are Born 64Object Properties 64Object Methods 65Object Event Handlers 66Object Model Smorgasbord 68Basic Object Model 68Basic Object Model Plus Images 69Navigator 4–Only Extensions 69Internet Explorer 4+ Extensions 71Internet Explorer 5+ Extensions 75The W3C DOM 76Mixing Object Models 92Simulating IE4+ Syntax in NN6 99Where to Go from Here 102

Chapter 15: Generic HTML Element Objects 105

Generic Objects 106

Chapter 16: Window and Frame Objects 217

Window Terminology 217Frames 218Window Object 225FRAME Element Object 299FRAMESET Element Object 305IFRAME Element Object 310popup Object 316

Chapter 17: Location and History Objects 321

Location Object 321History Object 332

Chapter 18: The Document and Body Objects 339

Document Object 340BODY Element Object 399

Chapter 19: Body Text Objects 409

BLOCKQUOTE and Q Element Objects 410

BR Element Object 411FONT Element Object 412H1 H6 Element Objects 414

Trang 28

HR Element Object 415

LABEL Element Object 418

MARQUEE Element Object 420

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

Trang 29

Chapter 25: Text-Related Form Objects 569

Text Input Object 570Password Input Object 582Hidden Input Object 582TEXTAREA Element Object 583

Chapter 26: Select, Option, and FileUpload Objects 589

SELECT Element Object 589OPTION Element Object 607OPTGROUP Element Object 609File Input Element Object 610

Chapter 27: Table and List Objects 613

The Table Object Family Hierarchy 614TABLE Element Object 628TBODY, TFOOT, and THEAD Element Objects 643CAPTION Element Object 645COL and COLGROUP Element Objects 646

Chapter 28: The Navigator and Other Environment Objects 665

clientInformation Object (IE4+) and navigator Object (All) 666mimeType Object 684plugin Object 688Looking for MIME Types and Plug-ins 691screen Object 698userProfile Object 703

Chapter 29: Event Objects 711

Why “Events”? 712Event Propagation 713Referencing the event object 732event Object Compatibility 734Dueling Event Models 735Event Types 738NN4 event Object 741IE4+ event Object 745NN6+ event Object 762

Trang 30

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

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

Trang 31

Chapter 36: The Date Object 967

Time Zones and GMT 967The Date Object 969Validating Date Entries in Forms 983

Chapter 37: The Array Object 987

Structured Data 987Creating an Empty Array 988Populating an Array 989JavaScript 1.2 Array Creation Enhancements 991Deleting Array Entries 991Parallel Arrays 992Multidimensional Arrays 995Array Object Properties 996Array Object Methods 998

Chapter 38: The Regular Expression and RegExp Objects 1007

Regular Expressions and Patterns 1007Language Basics 1009Object Relationships 1013Using Regular Expressions 1017Regular Expression Object 1023RegExp Object 1027

Chapter 39: Control Structures and Exception Handling 1033

If and If .Else Decisions 1034Conditional Expressions 1038Repeat (for) Loops 1039The while Loop 1044The do-while Loop 1045Looping through Properties (for-in) 1046The with Statement 1047Labeled Statements 1048The switch Statement 1050Exception Handling 1053Using try-catch-finally constructions 1055Throwing Exceptions 1059Error Object 1063

Chapter 40: JavaScript Operators 1069

Operator Categories 1069Comparison Operators 1070Equality of Disparate Data Types 1072Connubial Operators 1073Assignment Operators 1076

Trang 32

Chapter 43: Data-Entry Validation 1149

Real-Time Versus Batch Validation 1149

Designing Filters 1151

Building a Library of Filter Functions 1152

Combining Validation Functions 1156

Date and Time Validation 1158

Selecting Text Fields for Reentry 1160

An “Industrial-Strength” Validation Solution 1161

Plan for Data Validation 1176

Chapter 44: Scripting Java Applets and Plug-ins 1177

Scripting Java Classes Directly 1214

Chapter 45: Debugging Scripts 1217

Syntax versus Runtime Errors 1217

Error Message Notification 1218

Error Message Details 1219

Trang 33

Sniffing Out Problems 1226

A Simple Trace Utility 1232Browser Crashes 1235Preventing Problems 1235Testing Your Masterpiece 1236

Chapter 46: Security and Netscape Signed Scripts 1239

Battening Down the Hatches 1239When Worlds Collide 1240The Java Sandbox 1241Security Policies 1241The Same Origin Policy 1242The Netscape Signed Script Policy 1244The Digital Certificate 1246Signing Scripts 1247Accessing Protected Properties and Methods 1251Blending Privileges into Scripts 1254Example 1254Handling Privilege Manager Errors 1255Signed Script Miscellany 1256

Chapter 47: Cross-Browser Dynamic HTML Issues 1259

What Is DHTML? 1259Striving for Compatibility 1261Working Around Incompatibilities 1262

A DHTML API Example 1269

Chapter 48: Internet Explorer Behaviors 1273

Style Sheets for Scripts 1273Embedding Behavior Components 1274Component Structure 1275Behavior Examples 1277For More Information 1283

Chapter 49: Application: Tables and Calendars 1285

About the Calendars 1285Static Tables 1286Dynamic Tables 1289Hybrids 1293Dynamic HTML Tables 1293Further Thoughts 1297

Trang 34

Chapter 50: Application: A Lookup Table 1299

Chapter 51: Application: A “Poor Man’s” Order Form 1311

Defining the Task 1311

The Form Design 1312

Form HTML and Scripting 1313

Chapter 54: Application: Intelligent “Updated” Flags 1365

The Cookie Conundrum 1365

Time’s Not on Your Side 1366

Trang 35

Chapter 56: Application: Cross-Browser DHTML Map Puzzle 1399

The Puzzle Design 1399Implementation Details 1401Lessons Learned 1414

Chapter 57: Application: Transforming XML Data Islands 1415

Application Overview 1416Implementation Plan 1418The Code 1418Dreams of Other Views 1428What About NN6? 1429

Appendix A: JavaScript and Browser Object Quick Reference 1433 Appendix B: JavaScript Reserved Words 1447 Appendix C: Answers to Tutorial Exercises 1449

Chapter 4 Answers 1449Chapter 5 Answers 1450Chapter 6 Answers 1451Chapter 7 Answers 1452Chapter 8 Answers 1456Chapter 9 Answers 1457Chapter 10 Answers 1461Chapter 11 Answers 1463Chapter 12 Answers 1463

Appendix D: JavaScript and DOM Internet Resources 1465

Support and Updates for this Book 1465Newsgroups 1465FAQs 1466Online Documentation 1467World Wide Web 1467

Appendix E: What’s on the CD-ROM 1469

System Requirements 1469Disc Contents 1469

Trang 36

Appendix F: Examples from Parts III and IV CD-117

End User License Agreement 1512

CD-ROM Installation Instructions 1516

Trang 38

Chapter 2

Authoring ChallengesAmid the BrowserWars

Trang 40

JavaScript’s

Role in the

World Wide Web

and Beyond

Many of the technologies that make the World Wide

Web possible have far exceeded their original visions

Envisioned at the outset as a medium for publishing static

text and image content across a network, the Web is forever

being probed, pushed, and pulled by content authors By

tak-ing for granted so much of the “dirty work” of establishtak-ing the

connection and conveying the bits between server and client

computers, content developers and programmers dream of

using that connection to generate new user experiences and

operating system-independent applications A developer

com-munity essentially taking ownership of a technology and

molding it to do new and exciting things is not new It’s the

enormous popularity of the Web and the accessibility of the

technologies to everyday folks who have intriguing ideas that

has led to an unprecedented explosion in turning the World

Wide Web from a bland publishing medium into a highly

inter-active, operating system-agnostic authoring platform

The JavaScript language is a Web-enhancing technology

When employed on the client computer, the language can help

turn a static page of content into an engaging, interactive, and

intelligent experience Applications can be as subtle as

wel-coming a site’s visitor with the greeting “Good morning!”

when it is morning in the client computer’s time zone — even

though it is dinnertime where the server is located Or

appli-cations can be much more obvious, such as delivering the

content of a slide show in one-page download while JavaScript

controls the sequence of hiding, showing, and “flying slide”

transitions while navigating through the presentation

Of course, JavaScript is not the only technology that can

give life to drab Web content Therefore, it is important to

understand where JavaScript fits within the array of

1

In This Chapter

How JavaScriptblends with otherWeb-authoringtechnologiesThe history ofJavaScriptWhat kinds of jobsyou should andshould not entrust toJavaScript

Ngày đăng: 28/04/2014, 15:44