Statistics
10
Views
0
Downloads
0
Donations
Support
Share
Uploader

高宏飞

Shared on 2026-01-10

AuthorDave Thau!

The Book of JavaScript teaches readers how to add interactivity, animation, and other tricks to their web sites with JavaScript. Rather than provide a series of cut-and-paste scripts, thau! takes the reader through a series of real world JavaScript code with an emphasis on understanding. Each chapter focuses on a few important JavaScript features, shows how professional web sites incorporate them, and takes readers through examples of how they might add those features to their own web sites. This thoroughly updated 2nd edition includes new chapters on Ajax, revised appendices, and new examples throughout. Summary sections and assignments close each chapter, making the book perfect for use in college courses or independent study. CD includes code and images for every example, answers to assignments, script libraries for hard-to-program applications, and many useful software programs.

Tags
javascript
ISBN: 1593271069
Publisher: No Starch Press
Publish Year: 2006
Language: 英文
Pages: 519
File Format: PDF
File Size: 5.9 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
THE BOOK of ™ JAVASCRIPT 2ND EDITION A P R A C T I C A L G U I D E T O INTERACTIVE W E B P A G E S by thau! San Francisco ®
THE BOOK OF JAVASCRIPT, 2ND EDITION. Copyright © 2007 by Dave Thau. First edition © 2000 by Dave Thau. All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. 10 09 08 07 06 1 2 3 4 5 6 7 8 9 ISBN-10: 1-59327-106-9 ISBN-13: 978-1-59327-106-0 Publisher: William Pollock Associate Production Editor: Christina Samuell Cover and Interior Design: Octopod Studios Developmental Editors: Jim Compton, William Pollock, and Riley Hoffman Technical Reviewer: Luke Knowland Copyeditor: Publication Services, Inc. Compositors: Riley Hoffman and Megan Dunchak Proofreader: Stephanie Provines Indexer: Nancy Guenther For information on book distributors or translations, please contact No Starch Press, Inc. directly: No Starch Press, Inc. 555 De Haro Street, Suite 250, San Francisco, CA 94107 phone: 415.863.9900; fax: 415.863.9950; info@nostarch.com; www.nostarch.com Library of Congress Cataloging-in-Publication Data Thau. The book of JavaScript : a practical guide to interactive Web pages / Thau!. -- 2nd ed. p. cm. Includes index. ISBN-13: 978-1-59327-106-0 ISBN-10: 1-59327-106-9 1. JavaScript (Computer program language) I. Title. QA76.73.J39T37 2006 005.13'3--dc22 2006011786 No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc. Other product and company names mentioned herein may be the trademarks of their respective owners. Rather than use a trademark symbol with every occurrence of a trademarked name, we are using the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The information in this book is distributed on an “As Is” basis, without warranty. While every precaution has been taken in the preparation of this work, neither the author nor No Starch Press, Inc. shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in it. Printed on recycled paper in the United States of America
I dedicate this revised edition of The Book of JavaScript to my wonderful wife Kirsten Menger-Anderson, who never failed to keep a straight face when I said, “It’s almost done.”
(This page has no text content)
B R I E F C O N T E N T S Foreword by Luke Knowland ......................................................................................... xxi Foreword to the First Edition by Nadav Savio ................................................................ xxiii Acknowledgments ....................................................................................................... xxv Introduction .............................................................................................................. xxvii Chapter 1: Welcome to JavaScript! .................................................................................. 1 Chapter 2: Using Variables and Built-in Functions to Update Your Web Pages Automatically.................................................................... 15 Chapter 3: Giving the Browsers What They Want............................................................ 33 Chapter 4: Working with Rollovers................................................................................. 51 Chapter 5: Opening and Manipulating Windows ............................................................ 67 Chapter 6: Writing Your Own JavaScript Functions .......................................................... 83 Chapter 7: Providing and Receiving Information with Forms .............................................. 99 Chapter 8: Keeping Track of Information with Arrays and Loops ...................................... 123 Chapter 9: Timing Events ............................................................................................ 147 Chapter 10: Using Frames and Image Maps ................................................................. 169 Chapter 11: Validating Forms, Massaging Strings, and Working with Server-Side Programs ....................................................................... 191 Chapter 12: Saving Visitor Information with Cookies ...................................................... 215
viii Br ie f Contents Chapter 13: Dynamic HTML ........................................................................................ 233 Chapter 14: Ajax Basics ............................................................................................. 261 Chapter 15: XML in JavaScript and Ajax ...................................................................... 279 Chapter 16: Server-Side Ajax ...................................................................................... 299 Chapter 17: Putting It All Together in a Shared To Do List ............................................... 331 Chapter 18: Debugging JavaScript and Ajax ................................................................ 363 Appendix A: Answers to Assignments ........................................................................... 381 Appendix B: Resources ............................................................................................... 405 Appendix C: Reference to JavaScript Objects and Functions............................................ 411 Appendix D: Chapter 15’s Italian Translator and Chapter 17’s To Do List Application ........ 455 Index ........................................................................................................................ 469
C O N T E N T S I N D E T A I L FOREWORD by Luke Knowland xxi FOREWORD TO THE FIRST EDITION by Nadav Savio xxiii ACKNOWLEDGMENTS xxv INTRODUCTION xxvii How This Book Is Organized .................................................................................. xxvii Companion Website ...............................................................................................xxx 1 WELCOME TO JAVASCRIPT! 1 Is JavaScript for You?................................................................................................. 1 Is This Book for You? ................................................................................................. 2 The Goals of This Book .............................................................................................. 2 What Can JavaScript Do? .......................................................................................... 3 What Are the Alternatives to JavaScript?...................................................................... 5 CGI Scripting .............................................................................................. 5 VBScript...................................................................................................... 7 Java ........................................................................................................... 7 Flash .......................................................................................................... 7 JavaScript’s Limitations............................................................................................... 7 JavaScript Can’t Talk to Servers ..................................................................... 7 JavaScript Can’t Create Graphics .................................................................. 8 JavaScript Works Differently in Different Browsers ............................................ 8 Getting Started ......................................................................................................... 8 Where JavaScript Goes on Your Web Pages................................................................ 9 Dealing with Older Browsers .................................................................................... 10 Your First JavaScript ................................................................................................ 12 Summary................................................................................................................ 12 Assignment............................................................................................................. 13 2 USING VARIABLES AND BUILT-IN FUNCTIONS TO UPDATE YOUR WEB PAGES AUTOMATICALLY 15 Variables Store Information ...................................................................................... 16 Syntax of Variables .................................................................................... 16 Naming Variables...................................................................................... 17 Arithmetic with Variables ............................................................................ 18 Write Here Right Now: Displaying Results.................................................................. 19 Line-by-Line Analysis of Figure 2-4 ................................................................ 20 Strings ................................................................................................................... 20 Line-by-Line Analysis of Figure 2-6 ................................................................ 21
x Contents in Detai l More About Functions.............................................................................................. 21 alert()........................................................................................................ 22 Line-by-Line Analysis of Figure 2-9 ................................................................ 23 prompt() .................................................................................................... 24 Parameters ............................................................................................................. 25 Writing the Date to Your Web Page .......................................................................... 26 Built-in Date Functions ................................................................................. 26 Date and Time Methods .............................................................................. 26 Code for Writing the Date and Time............................................................. 27 Line-by-Line Analysis of Figure 2-12 .............................................................. 29 How the European Space Agency Writes the Date to Its Page ...................................... 30 Summary................................................................................................................ 31 Assignment............................................................................................................. 31 3 GIVING THE BROWSERS WHAT THEY WANT 33 A Real-World Example of Browser Detection .............................................................. 34 Browser Detection Methods ...................................................................................... 35 Quick-but-Rough Browser Detection .............................................................. 35 More Accurate Browser Detection ................................................................ 36 Redirecting Visitors to Other Pages............................................................................ 37 if-then Statements .................................................................................................... 38 Boolean Expressions................................................................................... 38 Nesting..................................................................................................... 40 if-then-else Statements ................................................................................. 40 if-then-else-if Statements ............................................................................... 41 When and Where to Place Curly Brackets..................................................... 41 OR and AND ......................................................................................................... 42 OR ........................................................................................................... 43 AND ........................................................................................................ 44 Putting It All Together............................................................................................... 45 A Few More Details About Boolean Expressions.......................................................... 47 How Netscape Provides Browser-Specific Content ....................................................... 48 Summary................................................................................................................ 50 Assignment............................................................................................................. 50 4 WORKING WITH ROLLOVERS 51 A Real-World Example of Rollovers ........................................................................... 52 Triggering Events .................................................................................................... 53 Event Types ............................................................................................... 53 Quotes in JavaScript................................................................................... 55 Clicking the Link to Nowhere ....................................................................... 56 More Interesting Actions.............................................................................. 57 Swapping Images ................................................................................................... 58 Working with Multiple Images .................................................................................. 59
Contents in Detai l xi What’s with All the Dots? ........................................................................................ 60 The document Object.................................................................................. 60 Object Properties ....................................................................................... 61 Finally, Rollovers! ....................................................................................... 62 Image Preloading....................................................................................... 62 How the Tin House Rollovers Work............................................................................ 64 Summary................................................................................................................ 65 Assignment............................................................................................................. 65 5 OPENING AND MANIPULATING WINDOWS 67 Real-World Examples of Opening Windows to Further Information................................ 68 Working with Windows as Objects........................................................................... 69 Opening Windows.................................................................................................. 69 Manipulating the Appearance of New Windows ........................................... 70 Some Browsers and Computers Open Windows Differently ............................. 72 Closing Windows ................................................................................................... 72 Using the Right Name: How Windows See Themselves and Each Other ........................ 73 Moving Windows to the Front or Back of the Screen.................................................... 74 Window Properties.................................................................................................. 74 The status Property ..................................................................................... 74 The opener Property ................................................................................... 75 More Window Methods........................................................................................... 77 Resizing Windows ..................................................................................... 77 Moving Windows ...................................................................................... 77 Summary................................................................................................................ 80 Assignment............................................................................................................. 80 6 WRITING YOUR OWN JAVASCRIPT FUNCTIONS 83 Functions as Shortcuts .............................................................................................. 84 Basic Structure of JavaScript Functions .......................................................... 84 Naming Your Functions............................................................................... 85 Parentheses and Curly Brackets.................................................................... 85 An Example of a Simple Function ................................................................. 85 Writing Flexible Functions ........................................................................................ 86 Using Parameters ....................................................................................... 87 Line-by-Line Analysis of Figure 6-4 ................................................................ 88 Using More Than One Parameter ................................................................. 90 Getting Information from Functions ............................................................................ 91 Line-by-Line Analysis of Figure 6-9 ................................................................ 92 Dealing with Y2K .................................................................................................... 93 Line-by-Line Analysis of Figure 6-12 .............................................................. 94 Defining Variables Properly ...................................................................................... 94 Summary................................................................................................................ 96 Assignment............................................................................................................. 97
xii Contents in Detai l 7 PROVIDING AND RECEIVING INFORMATION WITH FORMS 99 Real-World Examples of Forms................................................................................ 100 Form Basics .......................................................................................................... 101 Text Fields ............................................................................................... 102 Buttons, Checkboxes, and Radio Buttons ..................................................... 102 Select Elements ........................................................................................ 104 Textareas ................................................................................................ 106 Final Form Comments ............................................................................... 106 Forms and JavaScript............................................................................................. 107 Naming Form Elements ............................................................................. 107 Naming Radio Buttons .............................................................................. 108 Naming Options ...................................................................................... 108 Reading and Setting Form Elements ......................................................................... 109 Reading Information from Text Fields .......................................................... 109 Setting the Value of a Text Field ................................................................. 110 Textareas ................................................................................................ 111 Checkboxes............................................................................................. 112 Radio Buttons........................................................................................... 114 Pull-Down Menus and Scrollable Lists .......................................................... 115 Handling Events Using Form Elements ...................................................................... 116 Make this a Shortcut .............................................................................................. 117 Using Pull-Down Menus as Navigational Tools .......................................................... 118 One Last Forms Shortcut......................................................................................... 119 How the Doctors Without Borders Pull-Down Navigation Tool Works........................... 120 Summary.............................................................................................................. 120 Assignment........................................................................................................... 121 8 KEEPING TRACK OF INFORMATION WITH ARRAYS AND LOOPS 123 Real-World Examples of Arrays............................................................................... 123 JavaScript’s Built-In Arrays ...................................................................................... 124 Figuring Out How Many Items an Array Contains ..................................................... 126 Going Through Arrays ........................................................................................... 126 while Loops .......................................................................................................... 128 while Loops and Arrays ............................................................................ 129 Going Off the Deep End ........................................................................... 130 Using array.length in Your Loop................................................................. 131 An Incremental Shortcut ............................................................................ 131 Beware of Infinite Loops ............................................................................ 131 for Loops.............................................................................................................. 132 How AntWeb Checks Off All the Checkboxes .......................................................... 133 Line-by-Line Analysis of Figure 8-11 ............................................................ 133 Creating Your Own Arrays..................................................................................... 134 Line-by-Line Analysis of Figure 8-12 ............................................................ 135 How the Book of JavaScript Tip Box Works .............................................................. 136 Checking for Blank Statements ................................................................... 137 Checking the Last Element in the Array........................................................ 137
Contents in Detai l xiii Testing the Limits of Arrays ........................................................................ 137 The startScroll() Function............................................................................ 138 A Streamlined Version .............................................................................. 139 Loops Can Nest .................................................................................................... 140 Creating Arrays As You Go Along .......................................................................... 140 Associative Arrays................................................................................................. 142 Line-by-Line Analysis of Figure 8-18 ............................................................ 144 Summary.............................................................................................................. 144 Assignment........................................................................................................... 145 9 TIMING EVENTS 147 Real-World Examples of Timing Events..................................................................... 147 Setting an Alarm with setTimeout() ........................................................................... 148 Canceling an Alarm with clearTimeout() ................................................................... 149 Line-by-Line Analysis of Figure 9-3 .............................................................. 150 Repeating Timed Actions........................................................................................ 150 Line-by-Line Analysis of Figure 9-5 .............................................................. 152 Using parseInt() with Form Elements............................................................ 152 Clearing Out a Time-Out Before You Set a New One ................................... 153 Declaring Variables That Hold Time-Outs Outside Functions .......................... 153 Building a Clock with Timing Loops ......................................................................... 154 Line-by-Line Analysis of Figure 9-7 .............................................................. 155 How the Book of JavaScript Website’s Timer Works .................................................. 155 How Space.com’s Countdown Script Works............................................................. 157 Calculating Times..................................................................................... 160 Global Variables and Constants................................................................. 160 A Timed Slide Show .............................................................................................. 161 Line-by-Line Analysis of Figure 9-11 ............................................................ 162 A Safer Version of rotateImage() ............................................................................. 163 Why Declaring a Variable Outside a Function Is Unsafe ............................... 163 Why You Can’t Put var Inside a Timing Loop ............................................... 163 The Solution ............................................................................................ 164 The Hitch ................................................................................................ 165 The Solution to the Hitch............................................................................ 165 Why image_array Is Declared Outside the rotateImage() Function.................. 166 Summary.............................................................................................................. 167 Assignment........................................................................................................... 167 10 USING FRAMES AND IMAGE MAPS 169 A Real-World Example of Frames and Image Maps................................................... 170 Frames................................................................................................................. 170 Frame Basics ........................................................................................... 170 Frames and JavaScript .............................................................................. 172 Frames and Image Swaps ......................................................................... 174 Changing the Contents of Two Frames at Once ........................................... 176 Frames Inside Frames ............................................................................... 177 JavaScript and Frames Inside Frames.......................................................... 179
xiv Contents in Detai l Frame Busting .......................................................................................... 179 Using Frames to Store Information .............................................................. 181 Line-by-Line Analysis of Figure 10-15 .......................................................... 183 Image Maps ......................................................................................................... 184 Image Map Basics.................................................................................... 185 Image Maps and JavaScript ...................................................................... 186 How Salon’s Bug-Eating Script Works...................................................................... 186 Salon’s Nested Frames ............................................................................. 188 Salon’s Image Map .................................................................................. 188 The changeMe() Function .......................................................................... 188 Summary.............................................................................................................. 189 Assignment........................................................................................................... 190 11 VALIDATING FORMS, MASSAGING STRINGS, AND WORKING WITH SERVER-SIDE PROGRAMS 191 A Real-World Example of Form Validation ............................................................... 192 Making Sure a Visitor Has Filled Out a Form Element ................................................ 192 Line-by-Line Analysis of Figure 11-2 ............................................................ 194 String Handling..................................................................................................... 196 Breaking Strings Apart .............................................................................. 196 Matching String Patterns with Regular Expressions........................................ 203 How Dictionary.com’s Form Validators Work ........................................................... 207 Line-by-Line Analysis of Figure 11-11 .......................................................... 210 Summary.............................................................................................................. 213 Assignment........................................................................................................... 214 12 SAVING VISITOR INFORMATION WITH COOKIES 215 A Real-World Example of Cookies........................................................................... 216 What Are Cookies?............................................................................................... 216 What Cookies Can and Can’t Do ........................................................................... 217 Working with Cookies ........................................................................................... 218 Setting Cookies........................................................................................ 218 Reading Cookies...................................................................................... 218 Resetting Cookies ..................................................................................... 219 Setting More Than One Piece of Information................................................ 220 Setting the Duration of a Cookie ................................................................ 222 Who Can Read the Cookie?...................................................................... 224 The Whole Cookie ................................................................................... 224 Setting Multiple Cookies............................................................................ 225 Cookie Libraries.................................................................................................... 225 A Cookie-Based Shopping Cart .............................................................................. 226 Adding an Item to the Cart ........................................................................ 227 The Checkout Page................................................................................... 229 The readTheCookie() Function.................................................................... 230 The checkOut() Function ........................................................................... 231 Summary.............................................................................................................. 232 Assignment........................................................................................................... 232
Contents in Detai l xv 13 DYNAMIC HTML 233 Real-World Examples of DHTML.............................................................................. 234 CSS Basics ........................................................................................................... 234 The <div> Tag ......................................................................................... 235 Positioning a div with CSS......................................................................... 235 Hiding a div ............................................................................................ 237 Layering divs ........................................................................................... 237 JavaScript and DHTML........................................................................................... 238 Making divs Move ................................................................................................ 239 Using setTimeout() and clearTimeout() to Animate a Page ........................................... 239 Line-by-Line Analysis of Figure 13-10 .......................................................... 240 Changing the Contents of a div............................................................................... 241 spans and getElementsByTagName() ....................................................................... 242 Advanced DOM Techniques................................................................................... 244 W3C DOM Overview .............................................................................. 245 Creating and Adding Elements Using the W3C DOM .................................. 245 Adding Text to an Element......................................................................... 246 Adding Elements in the Middle of a Page and Removing Elements ................. 247 Additional DOM Details............................................................................ 248 Manipulating a Page Using the DOM......................................................... 250 Fancy Event Handling ............................................................................................ 250 The event Object...................................................................................... 250 Adding Event Handlers Using JavaScript ..................................................... 254 Drop-Down Menus ................................................................................................ 257 Line-by-Line Analysis of Figure 13-23 .......................................................... 259 The Borders ............................................................................................. 259 Summary.............................................................................................................. 259 Assignment........................................................................................................... 260 14 AJAX BASICS 261 A Real-World Example of Ajax ............................................................................... 262 Introduction to Ajax ............................................................................................... 263 Asynchronicity—The A in Ajax................................................................... 264 XML—The X in Ajax ................................................................................. 265 JavaScript—The J in Ajax .......................................................................... 265 Creating and Sending Requests .............................................................................. 265 Creating a Request Object ........................................................................ 265 Telling the Object Where to Send the Request ............................................. 266 What to Do When the Request Is Answered ................................................ 266 Writing JavaScript That Is Called After the Request Has Been Answered ......... 268 Sending the Request ................................................................................. 268 Putting Everything Together........................................................................ 269 Getting the Results .................................................................................... 270 Demonstrating Asynchronicity ................................................................................. 271 Line-by-Line Analysis of Figure 14-6 ............................................................ 273
xvi Contents in Detai l Ajax and Usability ................................................................................................ 274 The Back Button ....................................................................................... 274 URLs and Bookmarking ............................................................................. 274 Poor Design............................................................................................. 274 To Ajax, or Not to Ajax ......................................................................................... 275 Bad: Just Because You Can ....................................................................... 275 Bad: It’s the Hot New Thing....................................................................... 275 Bad: Replacing Something That Works with Something New and Confusing........................................................... 275 Good: In-Context Data Manipulation .......................................................... 276 Good: Interactive Widgets ........................................................................ 276 Good: Saving State .................................................................................. 276 Summary.............................................................................................................. 276 Assignment........................................................................................................... 277 15 XML IN JAVASCRIPT AND AJAX 279 A Real-World Example of Ajax and XML.................................................................. 280 Google Suggest .................................................................................................... 281 XML—the Extensible Markup Language.................................................................... 282 The Rules of XML................................................................................................... 283 The XML Header ...................................................................................... 283 XML Elements........................................................................................... 284 XML Attributes.......................................................................................... 284 Illegal XML Characters .............................................................................. 284 XML Documents Have a Single Root Element................................................ 285 Final Comments About the XML Format ....................................................... 285 Processing XML..................................................................................................... 285 Line-by-Line Analysis of Figure 15-6 ............................................................ 287 Internet Explorer, responseXML, and Client-Side Ajax ................................... 291 Problems with White Space in XML ............................................................ 291 Creating a Suggest Application for Translation ......................................................... 292 Finding the Translations ............................................................................ 294 Displaying the Results ............................................................................... 295 Summary.............................................................................................................. 296 Assignment........................................................................................................... 297 16 SERVER-SIDE AJAX 299 Real-World Examples of Server-Side Ajax ................................................................ 300 The Power of Webservers....................................................................................... 301 A Server-Side Programming Language ..................................................................... 303 PHP Basics ........................................................................................................... 304 Sending Simple Input to PHP with a GET Request ...................................................... 305 Passing Input in a URL............................................................................... 305 Using PHP to Read the Inputs of a GET Request............................................ 306
Contents in Detai l xvii Creating a Google Suggest Application with an Ajax GET Request ............................. 308 Contacting Third-Party Webservers with Ajax and PHP ................................. 308 The JavaScript for the Homemade Google Suggest Application ..................... 309 Using PHP to Contact Other Webservers..................................................... 313 Ajax and the POST Method.................................................................................... 314 An Ajax-Friendly Form .............................................................................. 316 POSTing with Ajax ................................................................................... 316 Sending XML Information from the Browser to a Webserver........................... 318 HEAD Requests: Getting Information About a Server-Side File .................................... 318 Adding Headers to Your Responses............................................................ 319 Headers and XML .................................................................................... 320 The Caching Problem ............................................................................................ 320 File Handling in PHP.............................................................................................. 321 Creating and Adding Contents to a Text File with PHP .................................. 321 Reading Files in PHP................................................................................. 322 When Communication Breaks Down........................................................................ 323 Automatically Updating a Web Page When a Server-Side File Changes...................... 325 readFileDoFunction()................................................................................. 327 callReadFile() ........................................................................................... 327 callUpdateIfChanged() .............................................................................. 328 stopTimer() .............................................................................................. 328 Recap and Breathe................................................................................... 328 The Server-Side PHP Code......................................................................... 328 Summary.............................................................................................................. 329 Assignment........................................................................................................... 330 17 PUTTING IT ALL TOGETHER IN A SHARED TO DO LIST 331 Features of the To Do List Application ...................................................................... 332 To Do List Data Files .............................................................................................. 334 userInfo.xml............................................................................................. 334 To Do List File .......................................................................................... 335 To Do List Server Side ............................................................................................ 336 The To Do List Client Side, Part 1: The HTML............................................................. 337 The To Do List Client Side, Part 2: The JavaScript ...................................................... 338 The Function Road Map ............................................................................ 339 Logging In and Out .................................................................................. 340 Functions Related to Logging In .................................................................. 341 Helper Functions ...................................................................................... 343 Displaying Available Lists .......................................................................... 346 Displaying a Specific List........................................................................... 349 Processing Changes to a List...................................................................... 352 Limitations on Manipulating XML Documents................................................ 356 Adding a New Item.................................................................................. 357 A Few Closing Notes............................................................................................. 359 Client-Side or Server-Side Code?................................................................ 359 Security Issues.......................................................................................... 359 Summary.............................................................................................................. 361 Assignment........................................................................................................... 361
xviii Contents in Detai l 18 DEBUGGING JAVASCRIPT AND AJAX 363 Good Coding Practices.......................................................................................... 364 Starting with Comments ............................................................................ 364 Filling In the Code .................................................................................... 365 Avoiding Common Mistakes ................................................................................... 365 Use a Consistent Naming Convention......................................................... 365 Avoid Reserved Words ............................................................................. 366 Remember to Use Two Equal Signs in Logical Tests....................................... 366 Use Quotation Marks Correctly .................................................................. 366 Finding Bugs......................................................................................................... 367 Printing Variables with alert() Statements ..................................................... 367 Debugging Beyond Alerts.......................................................................... 369 Using Your Browser’s Bug Detector............................................................. 370 Using JavaScript Debuggers ...................................................................... 370 Debugging Ajax in Firefox 1.5 and 2.0...................................................... 374 Other Debugging Resources ...................................................................... 376 Fixing Bugs .......................................................................................................... 376 Back Up Your Program ............................................................................. 377 Fix One Bug at a Time .............................................................................. 377 Avoid Voodoo Coding.............................................................................. 377 Look for Similar Bugs ................................................................................ 378 Clear Your Head...................................................................................... 378 Ask for Help ............................................................................................ 378 Summary.............................................................................................................. 379 A ANSWERS TO ASSIGNMENTS 381 Chapter 2 ............................................................................................................ 381 Chapter 3 ............................................................................................................ 383 Chapter 4 ............................................................................................................ 383 Chapter 5 ............................................................................................................ 384 index.html ............................................................................................... 384 image_page.html ..................................................................................... 384 Chapter 6 ............................................................................................................ 385 Chapter 7 ............................................................................................................ 385 Chapter 8 ............................................................................................................ 387 Chapter 9 ............................................................................................................ 389 Chapter 10 .......................................................................................................... 390 index.html ............................................................................................... 390 assignment-nav.html.................................................................................. 390 blank.html ............................................................................................... 391 Chapter 11 .......................................................................................................... 391 index.html ............................................................................................... 391 assignment-nav.html.................................................................................. 392 blank.html ............................................................................................... 394 Chapter 12 .......................................................................................................... 394 Chapter 13 .......................................................................................................... 395
Contents in Detai l xix Chapter 14 .......................................................................................................... 397 addressBook.xml...................................................................................... 397 index.html ............................................................................................... 397 Chapter 17 .......................................................................................................... 399 Join Functions .......................................................................................... 400 Giving a User Access to Your To Do List...................................................... 402 B RESOURCES 405 Tutorials ............................................................................................................... 405 HTML Tutorials ......................................................................................... 406 Cascading Style Sheets Tutorials ................................................................ 406 Advanced Topics in JavaScript................................................................... 406 Ajax Tutorials .......................................................................................... 407 Example JavaScript and Ajax Code......................................................................... 407 Good Ajax Websites............................................................................................. 407 Ajax Frameworks .................................................................................................. 408 JavaScript ............................................................................................... 408 PHP ........................................................................................................ 409 Java ....................................................................................................... 409 .NET....................................................................................................... 410 Ruby....................................................................................................... 410 C REFERENCE TO JAVASCRIPT OBJECTS AND FUNCTIONS 411 alert()................................................................................................................... 413 Anchor ................................................................................................................ 413 Applet ................................................................................................................. 413 Area.................................................................................................................... 414 Array................................................................................................................... 414 Button (Including Submit and Reset Buttons) .............................................................. 416 Checkbox............................................................................................................. 417 clearInterval()........................................................................................................ 417 clearTimeout() ....................................................................................................... 417 confirm() .............................................................................................................. 418 Date .................................................................................................................... 418 Document............................................................................................................. 421 elements[] ............................................................................................................ 423 escape()............................................................................................................... 423 eval() ................................................................................................................... 423 Event ................................................................................................................... 423 FileUpload ........................................................................................................... 424 Form.................................................................................................................... 424 Hidden ................................................................................................................ 426 History ................................................................................................................. 426 HTMLElement........................................................................................................ 427 Image .................................................................................................................. 429
xx Contents in Detai l isNaN() ............................................................................................................... 430 Link ..................................................................................................................... 431 Location ............................................................................................................... 431 Math ................................................................................................................... 432 Navigator ............................................................................................................ 433 Number ............................................................................................................... 434 Option................................................................................................................. 435 parseInt().............................................................................................................. 436 parseFloat() .......................................................................................................... 436 Password ............................................................................................................. 436 prompt() ............................................................................................................... 438 Radio .................................................................................................................. 438 Reset ................................................................................................................... 439 Screen ................................................................................................................. 439 Select .................................................................................................................. 439 setInterval() ........................................................................................................... 440 setTimeout() .......................................................................................................... 441 String................................................................................................................... 441 Style .................................................................................................................... 445 Submit ................................................................................................................. 446 Text ..................................................................................................................... 446 Textarea............................................................................................................... 447 this ...................................................................................................................... 448 unescape() ........................................................................................................... 448 var ...................................................................................................................... 448 window ............................................................................................................... 448 XMLHttpRequest and ActiveXObject("Microsoft.XMLHTTP") ......................................... 454 D CHAPTER 15’S ITALIAN TRANSLATOR AND CHAPTER 17’S TO DO LIST APPLICATION 455 Chapter 15’s Italian Translator................................................................................ 455 Chapter 17’s To Do List Application ........................................................................ 457 todo.html................................................................................................. 457 readXMLFile.php...................................................................................... 467 saveXMLFile.php ...................................................................................... 467 INDEX 469
F O R E W O R D The first JavaScript I remember writing was a routine to change two frames at the same time. I was the pro- duction specialist for HotWired, and it was shortly after frames and JavaScript debuted, well before there was documentation for either. Fortunately, it was also well before Internet Explorer 3.0 appeared on the scene, so I only had to make sure my JavaScript worked for Netscape 2.0. Even so, without a reference book to point out where possible pitfalls could be or answer simple questions such as how to set variables that JavaScript would like or how to make different windows talk to each other, it was one hell of a challenge. And it was deeply satisfying when I got it to work correctly. When Dave asked me to do the technical review of the second edition of The Book of JavaScript, I couldn’t have been more pleased or honored. The deep satisfaction I felt when I wrote those first JavaScripts and they worked correctly, and the deeper satisfaction I felt as more and more browsers were released and I figured out how to write cross-browser and cross-platform JavaScript, are the same feelings I got when I read Dave’s explanations and examples. He describes what a piece of code is going to do and how to think about it, then lays out an example of code that makes sense—whether you’re a seasoned programmer or entirely new to JavaScript. On top of all that, he takes a practical approach to programming, he’s able to explain complex