• Tidak ada hasil yang ditemukan

Hungry Minds JavaScript Bible Gold Edition Jul 2001 ISBN 0764547186 pdf

N/A
N/A
Protected

Academic year: 2019

Membagikan "Hungry Minds JavaScript Bible Gold Edition Jul 2001 ISBN 0764547186 pdf"

Copied!
2177
0
0

Teks penuh

(1)

Bible

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

ible

CD-ROM

INSIDE!

Nearly 300 Ready-to-Run

Example Scripts and More

on CD-ROM!

J

ava

S

cript

J

ava

S

cript

The Definitive

JavaScript Guide

— Over 175,000

Copies in Print

Danny Goodman

JavaScript pioneer and Consultant

®

With a foreword by Brendan Eich, creator of JavaScript

®

Features 15

bonus chapters

(2)

“JavaScript Bibleis 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 Bibleis 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.”

(3)

“I continue to use the book on a daily basis and would be lost without it.” — Mike Warner, Founder, Oak Place Productions

“JavaScript Bibleis by farthe best JavaScript resource I’ve ever seen (and I’ve seen quite a few).”

(4)
(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

(7)

New York, NY 10022 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

Mexico; by Editorial Norma de Panama S.A. for 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.

(8)

Danny Goodman

(9)

Acquisitions Editor

Debra Williams Cauley

Project Editor

Neil Romanosky

Technical Editor

David Wall

Copy Editors

Jerelind Charles

Victoria Lee O’Malley

Proof Editor

Cordelia Heaney

Editorial Manager

Colleen Totz

Project Coordinators

Cindy Phipps

Regina Snyder

Graphics and Production Specialists

Sean Decker

John Greenough

LeAndra Johnson

Stephanie Johnson

Gabriele McCann

Jill Piscitelli

Heather Pope

Ron Terry

Erin Zeltner

Quality Control Technicians

Laura Albert

Joel Draper

Andy Hollandbeck

Susan Moritz

Permissions Editor

Laura Moss

Media Development Specialist

Greg Stephens

Media Development Coordinator

Marisa Pearman

Book Designer

Kurt Krames

Proofreading

TECHBOOKS Production Services

Indexer

Johnna VanHoose Dinse

(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).

(11)

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.

(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

(13)

arrived on the scene. That’s why Chapter 2 is devoted to addressing challenges

fac-ing scripters who must develop applications for both sfac-ingle- 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.

You can find all of the Part II chapters on the CD-ROM that accompanies this book.

Part III

Part III, the largest section of the book, provides in-depth coverage of the document

object models as implemented in browsers from the earliest days to today. In all

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.

On the

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

(15)

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

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

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

(17)

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 scriptpass-ing. 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

(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 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, and Caution icons occasionally appear in the 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

(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

(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

(22)

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

(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

(25)

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

(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

Part III: Document Objects Reference

35

(27)

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

(28)

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,

(29)

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

(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

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

(31)

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

(32)

Boolean Operators . . . 1078

Bitwise Operators . . . 1082

Object Operators . . . 1083

Miscellaneous Operators . . . 1087

Operator Precedence . . . 1089

Chapter 41: Functions and Custom Objects . . . 1093

Function Object . . . 1093

Function Application Notes . . . 1102

Custom Objects . . . 1108

Object-Oriented Concepts . . . 1120

Object Object . . . 1123

Chapter 42: Global Functions and Statements . . . 1127

Functions . . . 1128

Statements . . . 1137

IE/Windows Objects . . . 1140

Part V: Putting JavaScript to Work

1147

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

LiveConnect Overview . . . 1177

Why Control Java Applets? . . . 1178

A Little Java . . . 1179

Scripting Applets in Real Life . . . 1181

Applet-to-Script Communication . . . 1190

Scripting Plug-ins . . . 1197

Scripting Java Classes Directly . . . 1214

(33)

Sniffing Out Problems . . . 1226

A Simple Trace Utility . . . 1232

Browser Crashes . . . 1235

Preventing Problems . . . 1235

Testing Your Masterpiece . . . 1236

Chapter 46: Security and Netscape Signed Scripts . . . 1239

Battening Down the Hatches . . . 1239

When Worlds Collide . . . 1240

The Java Sandbox . . . 1241

Security Policies . . . 1241

The Same Origin Policy . . . 1242

The Netscape Signed Script Policy . . . 1244

The Digital Certificate . . . 1246

Signing Scripts . . . 1247

Accessing Protected Properties and Methods . . . 1251

Blending Privileges into Scripts . . . 1254

Example . . . 1254

Handling Privilege Manager Errors . . . 1255

Signed Script Miscellany . . . 1256

Chapter 47: Cross-Browser Dynamic HTML Issues . . . 1259

What Is DHTML? . . . 1259

Striving for Compatibility . . . 1261

Working Around Incompatibilities . . . 1262

A DHTML API Example . . . 1269

Chapter 48: Internet Explorer Behaviors . . . 1273

Style Sheets for Scripts . . . 1273

Embedding Behavior Components . . . 1274

Component Structure . . . 1275

Behavior Examples . . . 1277

For More Information . . . 1283

(34)

Chapter 50: Application: A Lookup Table . . . 1299

A Serverless Database . . . 1299

The Database . . . 1300

The Implementation Plan . . . 1300

The Code . . . 1301

Further Thoughts . . . 1308

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

Defining the Task . . . 1311

The Form Design . . . 1312

Form HTML and Scripting . . . 1313

Further Thoughts . . . 1319

Chapter 52: Application: Outline-Style Table of Contents . . . 1321

Design Challenges . . . 1321

The Implementation Plan . . . 1322

The Code . . . 1324

Cascading Style Sheet Version . . . 1336

A Futuristic (XML) Outline . . . 1343

Further Thoughts . . . 1353

Chapter 53: Application: Calculations and Graphics . . . 1355

The Calculation . . . 1355

User Interface Ideas . . . 1356

The Code . . . 1357

Further Thoughts . . . 1363

Chapter 54: Application: Intelligent “Updated” Flags . . . 1365

The Cookie Conundrum . . . 1365

Time’s Not on Your Side . . . 1366

The Application . . . 1367

The Code . . . 1369

Further Thoughts . . . 1373

(35)

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

The Puzzle Design . . . 1399

Implementation Details . . . 1401

Lessons Learned . . . 1414

Chapter 57: Application: Transforming XML Data Islands . . . 1415

Application Overview . . . 1416

Implementation Plan . . . 1418

The Code . . . 1418

Dreams of Other Views . . . 1428

What About NN6? . . . 1429

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

Chapter 4 Answers . . . 1449

Chapter 5 Answers . . . 1450

Chapter 6 Answers . . . 1451

Chapter 7 Answers . . . 1452

Chapter 8 Answers . . . 1456

Chapter 9 Answers . . . 1457

Chapter 10 Answers . . . 1461

Chapter 11 Answers . . . 1463

Chapter 12 Answers . . . 1463

Appendix D: JavaScript and DOM Internet Resources . . . 1465

Support and Updates for this Book . . . 1465

Newsgroups . . . 1465

FAQs . . . 1466

Online Documentation . . . 1467

World Wide Web . . . 1467

(36)

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

Chapter 15 Examples . . . CD-117

Chapter 16 Examples . . . CD-253

Chapter 17 Examples . . . CD-336

Chapter 18 Examples . . . CD-354

Chapter 19 Examples . . . CD-397

Chapter 22 Examples . . . CD-453

Chapter 23 Examples . . . CD-471

Chapter 24 Examples . . . CD-479

Chapter 25 Examples . . . CD-492

Chapter 26 Examples . . . CD-503

Chapter 27 Examples . . . CD-514

Chapter 28 Examples . . . CD-531

Chapter 29 Examples . . . CD-543

Chapter 30 Examples . . . CD-566

Chapter 31 Examples . . . CD-572

Chapter 34 Examples . . . CD-600

Chapter 35 Examples . . . CD-614

Chapter 37 Examples . . . CD-616

Index. . . 1473

End User License Agreement . . . 1512

(37)
(38)

Getting Started

with JavaScript

In This Part

Chapter 1

JavaScript’s Role in

the World Wide Web

and Beyond

Chapter 2

Authoring Challenges

Amid the Browser

Wars

Chapter 3

Your First JavaScript

Script

(39)
(40)

JavaScript’s

Role in the

World Wide Web

and Beyond

M

any 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

What kinds of jobs

you should and

should not entrust to

JavaScript

(41)

standards, tools, and other technologies at your disposal. The alternative

technolo-gies described in this chapter are HTML, server programs, plug-ins, and Java

applets. In most cases, JavaScript can work side by side with these other

technolo-gies, even though the hype around some make them sound like one-stop shopping

places for all your interactive needs. That’s rarely the case. Finally, you learn about

the origins of JavaScript and what role it plays in today’s advanced Web browsers.

Competition on the Web

Web page publishers revel in logging as many visits to their sites as possible.

Regardless of the questionable accuracy of Web page

hit

counts, a site consistently

logging 10,000 dubious hits per week is clearly far more popular than one with 1,000

dubious hits per week. Even if the precise number is unknown, relative popularity is

a valuable measure.

Encouraging people to visit a site frequently is the Holy Grail of Web publishing.

Competition for viewers is enormous. Not only is the Web like a ten million-channel

television, but the Web competes for viewers’ attention with all kinds of

computer-generated information. That includes anything that appears onscreen as interactive

multimedia.

Users of entertainment programs, multimedia encyclopedias, and other colorful,

engaging, and mouse finger-numbing actions are accustomed to high-quality

presentations. Frequently, these programs sport first-rate graphics, animation,

live-action video, and synchronized sound. In contrast, the lowest common

denomina-tor Web page has little in the way of razzle-dazzle. Even with the help of recent

advances in Dynamic HTML and style sheets, the layout of pictures and text is

highly constrained compared with the kinds of desktop publishing documents you

see all the time. Regardless of the quality of its content, a vanilla HTML document is

flat. At best, interaction is limited to whatever navigation the author offers in the

way of hypertext links or forms whose filled-in content magically disappears into

the Web site’s server.

With so many ways to spice up Web sites and pages, you can count on

competi-tors for your site’s visicompeti-tors to do their darndest to make their sites more engaging

than yours. Unless you are the sole purveyor of information that is in high demand,

you continually must devise ways to keep your visitors coming back and entice new

ones. If you design an intranet, your competition is the drive for improved

produc-tivity by the colleagues who use the internal Web sites for getting their jobs done.

These are all excellent reasons why you should care about using one or more

Web technologies to raise your pages above the noise. Let’s look at the major

tech-nologies you should know about.

Hypertext Markup Language (HTML)

(42)

Relegating HTML to the category of a tagging language does disservice not only

to the effort that goes into fashioning a first-rate Web page, but also to the way

users interact with the pages. To my way of thinking, any collection of commands

and other syntax that directs the way users interact with digital information is

pro-gramming

. With HTML, a Web page author controls the user experience with the

content just as the engineers who program Microsoft Excel craft the way users

interact with spreadsheet content and functions.

Recent enhancements to the published standards for HTML (HTML 4.0 and later)

endeavor to define more narrowly the purpose of HTML to assign context to

con-tent, leaving the appearance to a separate standard for style sheets. In other words,

it’s not HTML’s role to signify that some text is italic, but rather to signify

why

it is

italic. (For example, you tag a chunk of text that conveys emphasis regardless of

how the style sheet or browser sets the appearance of that emphasized text.)

The most interactivity that HTML lets authors play with is associated with

fill-in-the-blank forms. Browsers display text boxes, radio buttons, checkboxes, and

select lists in response to HTML tags for those types of form controls. But that’s as

far as HTML goes. Any processing of the choices or information entered into the

form by the user is the job of other technologies, such as programs on the server or

client-side scripts.

CGI Scripting

One way to enhance the interaction between user and content is to have the page

communicate with the Web server that houses the Web pages. Popular Web search

sites, such as Yahoo!, Google, and Lycos, enable users to type search criteria and

click a button or two to specify the way the search engine should treat the query.

E-commerce sites enable you to gather products in a virtual shopping cart and then

click a button to submit an order for processing. When you click the Submit or

Search buttons, your browser sends your entries from a form to the server. On the

server, a program known as a

CGI (Common Gateway Interface)

script formats the

data you enter and sends this information to a database or other program running

on the server. The CGI script then sends the results to your browser, sometimes in

the form of a new page or as information occupying other fields in the form.

Writing customized CGI scripts typically requires considerable programming

skill. Most CGI scripts are written in languages such as Perl, Java, and C or C++.

Very few servers are equipped to run server scripts written in JavaScript.

Whatever language you use, the job definitely requires the Web page author to

be in control of the server, including whatever

back-end

programs (such as

databases) are needed to supply results or massage the information coming from

the user. Even with the new, server-based Web site design tools available, CGI

scripting often is not a task that a content-oriented HTML author can do without

handing it off to a more experienced programmer.

(43)

access big databases or other external computers. That’s why some people regard

browsing a basic Web page as little more than using a dumb terminal to access

some server content.

Of Helpers and Plug-ins

In the early days of the World Wide Web, a browser needed to present only a few

kinds of data before a user’s eyes. The power to render text (tagged with HTML)

and images (in popular formats such as GIF and JPEG) was built into browsers

intended for desktop operating systems. Not to be limited by those data types,

developers worked hard to extend browsers so that data in other formats could be

rendered on the client computer. It was unlikely, however, that a browser would

ever be built that could download and render, say, any of several sound file formats.

One way to solve the problem was to allow the browser, upon recognizing an

incoming file of a particular type, to launch a separate application on the client

machine to render the content. As long as this helper application was installed on

the client computer (and the association with the helper program set in the

browser’s preferences), the browser would launch the program and send the

incoming file to that program. Thus, you might have one helper application for a

MIDI sound file and another for a WAV sound file.

Beginning with Netscape Navigator 2, software

plug-ins

for browsers enabled

developers to extend the capabilities of the browser without having to modify the

browser. Unlike a helper application, a plug-in can enable external content to blend

into the document seamlessly.

The most common plug-ins are those that facilitate the playback of audio and

video from the server. Audio may include music tracks that play in the background

while visiting a page or live (streaming) audio, similar to a radio station. Video and

animation can operate in a space on the page when played through a plug-in that

knows how to process such data.

Today’s browsers tend to ship with plug-ins that decode the most common

sound file types. Developers of plug-ins for Internet Explorer for the Windows

oper-ating system commonly implement plug-ins as ActiveX controls — a distinction that

is important to the underpinnings of the operating system, but not to the user.

Plug-ins and helpers are valuable for more than just audio and video playback. A

popular helper application is the

Adobe Acrobat Reader

, which displays Acrobat

files that are formatted just as if they were being printed. But for interactivity,

developers today frequently rely on Macromedia Corporation’s

Flash

plug-in.

Created using the Macromedia Flash authoring environment, a Flash document can

have active clickable areas and draggable elements. Some authors even simulate

artistic video games and animated stories in Flash. A browser equipped with the

Flash plug-in displays the content in a rectangular area embedded within the

browser page.

Gambar

TABLE Element Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Figure 3-1: Editor and browser window arrangement in Windows 98
Figure 3-2: Editor and browser window arrangement on the Macintosh screen
Figure II-1: Map of the lowest common denominator document object model
+7

Referensi

Dokumen terkait

For the faulted gate, the vector representing the values on the input or output that is faulted is modified to represent the stuck-at value for all of the applied vectors.. If

To make this helper’s functions available in the Blog helper, you’ll need to include the Ajax helper before creating the $blog->comments() function. On line 3 of the

The beauty of basing your solutions on a single relational database management product family is that you can do your development on the more advanced edi- tions of SQL Server,

Instead of declaring content models for allowable elements, however, DTDs allow you to declare a list of allowable attributes for each element. Following the

You will decide what aspects of the objects you need to include to define that particular class of object, and you will choose them depending on the kinds of problems that you want

When working with virtual methods, you need to keep in mind that the datatype of the object is used to determine the implementation of the method to call, rather than the type of

Traversing more complex structures is also simple if they are homogenous (that is, each level of nesting contains the same type of reference and we don't have other data types

Of these, the opening credits and closing tag are the most reusable clips you can create to make your look and feel consistent; you won’t need to change them to reflect the content in