Ajax: The Definitive Guide

Errata for Ajax: The Definitive Guide

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update



Version Location Description Submitted By Date Submitted Date Corrected
Printed
Page xix
6-7 paragraphs

Links to examples download are not valid.

Note from the Author or Editor:
ajax.holdener.com is down and I have no timeline when it will be back up. As the O'Reilly book page already has changed the link, the book should as well. The examples are located at http://examples.oreilly.com/9780596528386/.

Anonymous  May 16, 2008 
Printed
Page 12
bottom of page

Information is out-of-date. Instead of: As of 2007, the latest version of JavaScript is 1.7, which, like its predecessor, 1.6, does correspond to ECMA-262 Edition 3 as JavaScript 1.5 does. In this latest edition, it has some Array extras, String generics, and extensions such as pop( ), push( ), shift( ), and unshift( ). Should be: As of 2009, the latest implemented version of JavaScript is 1.9, which builds upon all of its predecessors (1.5 through 1.8.1) – all of which correspond to ECMA-262 Edition 3 starting at 1.5. This latest addition includes ECMAScript 5 compliance, and is projected to first be seen in Mozilla Firefox 4.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 12
bottom of page

Information is out-of-date. Instead of: However, most of these browsers have only implemented to JavaScript 1.5, so all code examples, unless otherwise noted, are based on this version. Should be: Most of these browsers have now implemented to at least JavaScript 1.7, with the exception being Internet Explorer and surprisingly, Opera, who have still only implemented to JavaScript 1.5. For this reason all code examples, unless otherwise noted, are based on this version.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 14
middle of page

Information is out-of-date. Instead of: The W3C's XML 1.0 Recommendation has three versions: the first was published on February 10, 1998, the second on October 6, 2000, and the third on February 4, 2004. Also on February 4, 2004, the W3C published the XML 1.1 Recommendation, which gave consistency in character representations and relaxed names, allowable characters, and end-of-line representations. Should be: The W3C's XML 1.0 Recommendation is now in its fifth edition: the first was published on February 10, 1998 while the latest edition was published on November 26, 2008. At the same time as edition three was being released (February 4, 2004), the W3C also published the XML 1.1 Recommendation, which gave consistency in character representations and relaxed names, allowable characters, and end-of-line representations. The second edition of XML 1.1 was published on September 29, 2006.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 17
end of page in list

Name has changed. Instead of: - KHTML/WebCore Should be: - KHTML/WebKit

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 18
end of page (heading)

Name has changed. Instead of: WebCore Should be: WebKit

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 18
end of page

Name has changed. Instead of: The most notable browsers that use KHTML are KDE Konqueror and Apple's Safari, though Safari uses a variant called WebCore, which OmniWeb also uses. Should be: The most notable browsers that use KHTML are KDE Konqueror and Apple's Safari, though Safari uses a variant called WebKit, which Google's Chrome and OmniWeb also use.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 18
Table 1.1

Table 1-1. Standards supported by browser engine - some of the values have changed.

Note from the Author or Editor:
These are the correct values for the table: Table 1-1. Standards supported by browser engine Gecko Trident KHTML/WebKit Presto HTML Yes Yes Yes Yes XHTML/XML Yes Partial Yes Yes CSS1 Yes Yes Yes Yes CSS2 (CSS2.1) Yes Partial Yes Yes CSS3 Partial Partial Partial Partial DOM level 1 Yes Partial Yes Yes DOM level 2 Yes No Yes Yes DOM level 3 Partial No Partial Partial RSS Yes Yes Yes Yes Atom Yes Yes Yes Yes JavaScript 1.8.1 1.5 1.7 1.5 PNG alpha-transparency Yes Yes Yes Yes XSLT Yes Yes Yes Yes SVG Partial No Partial Partial XPath Yes Yes Yes Yes Ajax Yes Yes Yes Yes Progressive JPEG Yes No Yes Yes

Anonymous  Aug 30, 2009  Sep 01, 2009
Printed
Page 36
bottom of page

Information is out of date. Instead of: According to the October 2007 Netcraft Web Server Survey (http://news.netcraft.com/archives/2007/10/11/october_2007_web_server_survey.html), Apache had a 47.73 percent market share, whereas Microsoft had 37.13 percent (this is a combination of all servers using Personal Web Server, both PWS and PWS-95, and IIS, both IIS and IIS-W). Should be: According to the July 2009 Netcraft Web Server Survey (http://news.netcraft.com/archives/2009/07/28/july_2009_web_server_survey.html), Apache had a 51.12 percent market share, whereas Microsoft had 23.99 percent (this is a combination of all servers using Personal Web Server, both PWS and PWS-95, and IIS, both IIS and IIS-W).

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 37
Table 3.1

Remove second footnote in table at top of page.

scottd_oreilly  Aug 30, 2009  Sep 01, 2009
Printed
Page 41
top of page

Information is out-of-date. Instead of: Although the newest version of the .NET Framework (which comes by default with Windows Vista) is 3.0, do not confuse the numbers. The 3.0 Framework still uses the 2.0 version of the CLR—essentially the same ASP.NET, Windows Forms, and ADO.NET that come with the 2.0 Framework. The next version of the Framework, .NET 3.5 (NetFx or Fx), will come with a new version of the CLR. At this point, you will have to learn a new model. Should be: Although the newest version of the .NET Framework (which is downloadable in service packs for Windows XP and Vista) is 3.5 SP1, do not confuse the numbers. The 3.5 Framework still uses the 2.0 version of the CLR – essentially the same ASP.NET, Windows Forms, and ADO.NET that come with the 2.0 Framework. It is presumed that the next version of the Framework, .NET 4.0, will come with a new version of the CLR. At that point, though the 4.0 Framework will run side by side with earlier ones, you will have to learn a new model.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 55
end of page

Wrong file addressed in comments. * The generic db.php library, containing database connection information such as should be: * The generic db.inc library, containing database connection information such as

Anonymous    Sep 01, 2009
Printed
Page 64
beginning of page

Wrong file addressed in comments. * The generic db.php library, containing database connection information such as should be: * The generic db.inc library, containing database connection information such as

Anonymous    Sep 01, 2009
Printed
Page 64
end of page

No closing comment on comment line. /* Loop through the records should be: /* Loop through the records */

Anonymous    Sep 01, 2009
Printed
Page 66
beginning of page

Wrong file addressed in comments. * The generic db.php library, containing database connection information such as should be: * The generic db.inc library, containing database connection information such as

Anonymous    Sep 01, 2009
Printed
Page 72
example 4-2

comments describe the p_func argument as a string, the

Note from the Author or Editor:
There is an incorrect statement in the comments mentioned above. Instead of: * @param {String} p_func The string name of the function to call on It should read: * @param {Object} p_func The function to call on

Anonymous  Jul 10, 2008  Sep 01, 2009
Printed
Page 72
1st paragraph

AS IS: This same data could be passed an XML document as: SHOULD BE: This same data could be passed as an XML document:

Anonymous    Sep 01, 2009
Printed
Page 77
bottom of code example

p_request.send(); should be: p_request.send(null);

Anonymous    Sep 01, 2009
Printed
Page 78
Example 4-6, Parsing data sent from the server

Explicitly declare variables in the body of a function with a var statement. Otherwise, the variables are implicitly declared as global variables.

Note from the Author or Editor:
This is a true statement, but does not really apply to Example 4-6. If there was to be any change to this example, it would be to change this line: for (i = 0, il = paramList.length; i < il;) to this: for (var i = 0, il = paramList.length; i < il;)

Anonymous   
Printed
Page 94
bottom of page

Information is out-of-date. Instead of: As of this writing, the current version of the Dojo Toolkit is 0.9. Should be: As of this writing, the current version of the Dojo Toolkit is 1.3.2.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 95
middle of page

Information is out-of-date. Instead of: In this book, I am using Prototype version 1.5.1.1, which is based on the latest version being used by the libraries and frameworks that rely on it. Should be: In this book, I am using Prototype version 1.5.1.1, though the latest version as of this writing is 1.6.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 95
bottom of page

Information is out-of-date. Instead of: As of this writing, the current version of script.aculo.us is 1.7.0. Should be: As of this writing, the current version of script.aculo.us is 1.8.2.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 96
top of page

Information is out-of-date. Instead of: DWR, which you can find at http://getahead.ltd.uk/dwr/, Should be: DWR, which you can find at http://directwebremoting.org/dwr/index.html,

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 97
top of page

Information is out-of-date. Instead of: As of this writing, the current version of jQuery is 1.1.4. Should be: As of this writing, the current version of jQuery is 1.3.2.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed
Page 97
middle of page

Information is out-of-date. Instead of: As of this writing, the latest release of Sarissa is 0.9.8.1. Should be: As of this writing, the latest release of Sarissa is 0.9.9.4.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009  Sep 01, 2009
Printed, Safari Books Online
Page 104
Figure 5.1

"string" should be "strong"

Note from the Author or Editor:
The figure does incorrectly state "string" instead of "strong", as the node is supposed to represent the <strong> element in the example XHTML document above it.

Matheas Manssen  Nov 10, 2011 
Printed
Page 115
bottom of page

Code might not work as shown. Instead of: var elements = getElementsByTagName('a'); Should be: var elements = document.getElementsByTagName('div');

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 185
top of page (heading)

Misleading heading. Instead of: Image rollovers the Ajax way Should be: Image rollovers the CSS way

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 194
bottom of page

Code missing. Instead of: <a href="find/" class="fileMenuButton" accesskey="N" hreflang="en" tabindex="13"> Find </a> Should be: <a href="find/" class="fileMenuButton" accesskey="N" hreflang="en" tabindex="13" onmouseover="menu.buttonMouseover(event, null);"> Find </a>

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 199
middle of code block

Code does not work as is. Instead of: initialize: function( ) { this.isOpera = (this._agent.indexOf('opera') != -1); this.isIE = ((this._agent.indexOf('mac') != -1) && (this._version.indexOf('msie') != -1)); this.isOther = (this._agent.indexOf('konqueror') != -1); this.isSafari = ((this._agent.indexOf('safari') != -1) && (this_.agent.indexOf('mac') != -1)); this.isIE = ((this._version.indexOf('msie') != -1) && !this.isOpera && !(this._agent.indexOf('mac') != -1) && !this.isOther && !this.isSafari); this.isMoz = (!this.isOther && !this.isSafari && navigator.product && (navigator.product.toLowerCase( ) == 'gecko')); this.isOther = (!this.isIE && !this.isMoz && !this.isOpera && !this.isSafari); } }; /* use Prototype's cross-browser event handling methods for ease of use. */ try { /* * Call the initialize method of the Browser object when the load event * fires in the document */ Event.observe(document, 'load', Browser.initialize, false); } catch (ex) {} Should be: initialize: function() { Browser.isOpera = (Browser._agent.indexOf('opera') != -1); Browser.isIE = ((Browser._agent.indexOf('mac') != -1) && (Browser._version.indexOf('msie') != -1)); Browser.isOther = (Browser._agent.indexOf('konqueror') != -1); Browser.isSafari = ((Browser._agent.indexOf('safari') != -1) && (this_.agent.indexOf('mac') != -1)); Browser.isIE = ((Browser._version.indexOf('msie') != -1) && !Browser.isOpera && !(Browser._agent.indexOf('mac') != -1) && !Browser.isOther && !Browser.isSafari); Browser.isMoz = (!Browser.isOther && !Browser.isSafari && navigator.product && (navigator.product.toLowerCase() == 'gecko')); Browser.isOther = (!Browser.isIE && !Browser.isMoz && !Browser.isOpera && !Browser.isSafari); } }; /* use Prototype's cross-browser event handling methods for ease of use. */ try { /* * Call the initialize method of the Browser object when the load event * fires in the document */ Event.observe(window, 'load', Browser.initialize, false); } catch (ex) {}

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 201
bottom of code block

Line of code needed. Instead of: /* Is this button part of the file menu already? */ if (!button.fileMenu) { Button.fileMenu = $(p_fileMenuId); /* Is this button already initialized? */ if (!button.fileMenu.isInitialized) this.fileMenuInit(button.fileMenu); } Should be: /* Is this button part of the file menu already? */ if (!button.fileMenu) { Button.fileMenu = $(p_fileMenuId); /* Was an id passed to us? */ if (button.fileMenu) /* Is this button already initialized? */ if (!button.fileMenu.isInitialized) this.fileMenuInit(button.fileMenu); }

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 203
top of code block

Line of code needed. Instead of: $(p_button).setStyle({ left: x + 'px', top: y + 'px', display: 'block' }); Should be: /* Is there a /fileMenu/ to manipulate? */ if (p_button.fileMenu) p_button.fileMenu.setStyle({ left: x + 'px', top: y + 'px', display: 'block' });

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 205
bottom of code block

Statement incorrect. Instead of: /* Show the submenu */ $(item).setStyle({ left: x + 'px', top: y + 'px', display: 'block' }); Should be: /* Show the submenu */ item.subFileMenu.setStyle({ left: x + 'px', top: y + 'px', display: 'block' });

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 210
middle of page

Code missing. Instead of: <a href="find/" class="fileMenuButton" accesskey="N" hreflang="en" tabindex="13"> Find </a> Should be: <a href="find/" class="fileMenuButton" accesskey="N" hreflang="en" tabindex="13" onmouseover="menu.buttonMouseover(event, null);"> Find </a>

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 325
second sentence

Second sentence ends "... within the <iframe> element." It should end "... within the <div> element."

Anonymous   
Printed
Page 370
bottom of page

Typo in code. Instead of: background: #fff url('../..//images/bodyBackground.png') no-repeat fixed 0 0; Should be: background: #fff url('../../images/bodyBackground.png') no-repeat fixed 0 0;

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 372
top of page

Unfinished XHTML element. Instead of: <link type="text/css" rel="alternate stylesheet" media="screen" title="monochrome" href="screen/themes/mono Should be: <link type="text/css" rel="alternate stylesheet" media="screen" title="monochrome" href="screen/themes/monochrome.css" />

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 401
Code at bottom of page

A rather minor point: Looks like the terms were translated from English into German by an automatic translation -- with funny results to a German speaker. :-)

Note from the Author or Editor:
the whole section of code should read: [ 'Deine pers&#246;nlichen Informationen eintragen.', 'Familienname: ', 'Vorname: ', 'zweiter Vorname: ', 'Adresse: ', 'Stadt: ', 'Bundesland/Kanton: ', 'Postleitzahl: ', 'Telefonnummer: ', 'E-mail: ' ]

Anonymous  Apr 09, 2009 
Printed
Page 401
middle of page

Incorrect word in sentence. Instead of: better than a JavaScript Object Notation (JSON) response, but because JavaScript is usually easier to comprehend and Should be: better than a JavaScript Object Notation (JSON) response, but because XML is usually easier to comprehend and

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 429
end of page

Comment block for the sendToUser method should go right before the method declaration.

Anonymous   
Printed
Page 430
beginning of page

There should be a colon instead of a comma FORM_EMAIL-INPUT, 2, should be: FORM_EMAIL-INPUT: 2,

Anonymous   
Printed
Page 478
middle of page

Missing a space in the code. Instead of: $xml .= "<stat id=\"{$row['team_abbr']}\" color=\"{$colors[$i++]}\"" ."height=\"".$row[strtolower($_REQUEST['stat'])]."\" />"; Should be: $xml .= "<stat id=\"{$row['team_abbr']}\" color=\"{$colors[$i++]}\"" ." height=\"".$row[strtolower($_REQUEST['stat'])]."\" />";

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 502
Mmddle of page

Incomplete comment block for the method _toggleValue. should read: /** * This method, _toggleValue, overrides what the toggle value's Boolean value * should be. * ...

Anonymous   
Printed
Page 513
middle of page

Missing semicolon. if (dims.width > width) width = dims.width should be: if (dims.width > width) width = dims.width;

Anonymous   
Printed
Page 542
middle of code block

Regular expressions are not working correctly. Instead of: /* Is the card type Visa? [length 16; prefix 4] */ if (type == "VISA") regExp = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/; /* Is the card type MasterCard? [length 16; prefix 51 - 55] */ else if (type == "MasterCard") regExp = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; /* Is the card type Discover? [length 16; prefix 6011] */ else if (type == "Discover") regExp = /^6011-?\d{4}-?\d{4}-?\d{4}$/; /* Is the card type American Express? [length 15; prefix 34 or 37] */ else if (type == "AmericanExpress") regExp = /^3[4,7]\d{13}$/; /* Is the card type Diners Club? [length 14; prefix 30, 36, or 38] */ else if (type == "Diners") regExp = /^3[0,6,8]\d{12}$/; /* Does the card number have a valid syntax? */ if (!regExp.test(number)) return (false); /* Strip valid characters from number */ number = (number.split('-')).join(''); number = (number.split(' ')).join(''); Should be: /* Strip valid characters from number */ number = number.replace(/\D/g, ''); /* Is the card type Visa? [length 16; prefix 4] */ if (type == "VISA") regExp = /^4\d{15}$/; /* Is the card type MasterCard? [length 16; prefix 51 - 55] */ else if (type == "MasterCard") regExp = /^5[1-5]\d{14}$/; /* Is the card type Discover? [length 16; prefix 6011] */ else if (type == "Discover") regExp = /^6011\d{12}$/; /* Is the card type American Express? [length 15; prefix 34 or 37] */ else if (type == "AmericanExpress") regExp = /^3[4,7]\d{13}$/; /* Is the card type Diners Club? [length 14; prefix 30, 36, or 38] */ else if (type == "Diners") regExp = /^3[0,6,8]\d{12}$/; /* Does the card number have a valid syntax? */ if (!regExp.test(number)) Return (false);

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 549
top of page

Regular expressions are not working correctly. Instead of: /* Is the card type Visa? [length 16; prefix 4] */ if (type == "VISA") regExp = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/; /* Is the card type MasterCard? [length 16; prefix 51 - 55] */ else if (type == "MasterCard") regExp = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; /* Is the card type Discover? [length 16; prefix 6011] */ else if (type == "Discover") regExp = /^6011-?\d{4}-?\d{4}-?\d{4}$/; /* Is the card type American Express? [length 15; prefix 34 or 37] */ else if (type == "AmericanExpress") regExp = /^3[4,7]\d{13}$/; /* Is the card type Diners Club? [length 14; prefix 30, 36, or 38] */ else if (type == "Diners") regExp = /^3[0,6,8]\d{12}$/; /* Does the card number have a valid syntax? */ if (!regExp.test(number)) return (false); /* Strip valid characters from number */ number = (number.split('-')).join(''); number = (number.split(' ')).join(''); Should be: /* Strip valid characters from number */ number = number.replace(/\D/g, ''); /* Is the card type Visa? [length 16; prefix 4] */ if (type == "VISA") regExp = /^4\d{15}$/; /* Is the card type MasterCard? [length 16; prefix 51 - 55] */ else if (type == "MasterCard") regExp = /^5[1-5]\d{14}$/; /* Is the card type Discover? [length 16; prefix 6011] */ else if (type == "Discover") regExp = /^6011\d{12}$/; /* Is the card type American Express? [length 15; prefix 34 or 37] */ else if (type == "AmericanExpress") regExp = /^3[4,7]\d{13}$/; /* Is the card type Diners Club? [length 14; prefix 30, 36, or 38] */ else if (type == "Diners") regExp = /^3[0,6,8]\d{12}$/; /* Does the card number have a valid syntax? */ if (!regExp.test(number)) Return (false);

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 677
top of code block

For cross-browser functionality, slight change to code. Instead of: window.location = 'chat.php'; Should be: window.location.href = 'chat.php';

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 678
bottom of page

Consistency referencing previous errata change. Instead of: The client page is then changed to chat.php by the JavaScript line window.location = 'chat.php';. Should be: The client page is then changed to chat.php by the JavaScript line window.location.href = 'chat.php';.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 682
top of page

For cross-browser functionality, slight change to code. Instead of: onSuccess: function( ) { window.location = 'index.html'; }, onFailure: function( ) { window.location = 'index.html'; } Should be: onSuccess: function( ) { window.location.href = 'index.html'; }, onFailure: function( ) { window.location.href = 'index.html'; }

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 686
top of page

For cross-browser functionality, slight change to code. Instead of: onSuccess: function( ) { window.location = 'index.html'; }, onFailure: function( ) { window.location = 'index.html'; } Should be: onSuccess: function( ) { window.location.href = 'index.html'; }, onFailure: function( ) { window.location.href = 'index.html'; }

Note from the Author or Editor:
formatting was lost in submission.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 738
middle of page

Missing function keyword. startAnimation(p_direction) { should be: startAnimation: function(p_direction) {

Anonymous   
Printed
Page 741
bottom of page

Missing function keyword. startAnimation(p_direction) { should be: startAnimation: function(p_direction) {

Anonymous   
Printed
Page 743
top of page

Typo in code. Instead of: var __MOVE_BACKWARD = 0; Should be: var __MOVE_BACKWARD__ = 0;

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 769
bottom of page

Wrong word in InformStop comment block. * @param {Integer} p_egoId The id that the server gives to the player when * starting. should be: * @param {Integer} p_egoId The id that the server gives to the player when * stopping.

Anonymous   
Printed
Page 779
middle of page

Missing function keyword. startAnimation(p_direction) { should be: startAnimation: function(p_direction) {

Anonymous   
Printed
Page 827
Code following 1st paragrapgh

loop does not visit index 0: for (var i = arrNumbers.length - 1; i > 0; i--) count += arrNumbers[i]; should be: for (var i = arrNumbers.length - 1; i >= 0; i--) count += arrNumbers[i]; or alternatively: for (var i = arrNumbers.length; i > 0; ) count += arrNumbers[--i];

Note from the Author or Editor:
I would opt for the change to be: for (var i = arrNumbers.length; i > 0;) count += arrNumbers[--i]; as this is more in line with true optimization (less operations to check and multiple operations on a single line).

Lars  Apr 12, 2009 
Printed
Page 833
top of page

Type in object. SSystem.IO.Compression.CompressionMode.Compress); should be: System.IO.Compression.CompressionMode.Compress);

Anonymous   
Printed
Page 875
bottom of page

Information is out-of-date. Instead of: The current version of Rico is 1.1.2 (though Rico 2.0 beta 2 is out). Should be: The current version of Rico is 2.1.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 877
middle of page

Information is out-of-date. Instead of: The current version of MooTools is 1.11. Should be: The current version of MooTools is 1.2.3.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 880
bottom of page

Information is out-of-date. Instead of: The Dojo Foundation (formed in 2005) maintains the code, which is currently at version 0.9. Should be: The Dojo Foundation (formed in 2005) maintains the code, which is currently at version 1.3.2.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 884
middle of page

Information is out-of-date. Instead of: The current version of Sarissa is 0.9.8.1. Should be: The current version of Sarissa is 0.9.9.4.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 886
top of page

Information is out-of-date. Instead of: The current version of MochiKit is 1.3.1. Should be: The current version of MochiKit is 1.4.2.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009 
Printed
Page 889
bottom of page

Information is out-of-date. Instead of: The current version of jQuery is 1.1.4. Should be: The current version of jQuery is 1.3.2.

Anthony T. Holdener III
O'Reilly Author 
Aug 24, 2009