We try to keep our books accurate, but sometimes mistakes creep
in. This page lists the errors submitted by our astute readers.
If you've found a new error, please
submit it.
The latest version of the book is P1.0,
released about 1 year ago.
If you've bought a PDF of the book and would like to upgrade
it to this version (for free), visit your
home page.
| PDF |
Paper |
Description |
Found in |
Fixed in |
|
15 |
#35943: The book's comments on installation of dojo are a bit out-of-sync with current (1.2.2) release. Turns out that default distro omits the tests which, as the book mentions, are useful for validating installation. Book readers probably want to get the "source" distribution, from: download.dojotoolkit.org/current-dev.--Graham Wideman #35943: The book's comments on installation of dojo are a bit out-of-sync with current (1.2.2) release. Turns out that default distro omits the tests ...more...
|
P1.0
16-Nov-08
|
|
|
15 |
#35944: I didn't see info on where to install the book's sample code, and it turns out to matter. Basically, the book's tree of source code assumes it's installed at /dojobook (so /dojobook/form_controls/ etc). Also, as page 15 notes, the dojo tree itself installed at /dojoroot (so /dojoroot/dojo, /dojoroot/dijit, /dojoroot/dojox).
This layout is needed so that statements in the book's source find needed files, notably:
dojo.registerModulePath("dojobook","../../dojobook");
... which apparently registers a path to dojobook relative to /dojoroot/dojo, not relative to the source, which might not be obvious.
(Not clear to me why registering a relative path is preferable to an absolute path in this case.)--Graham Wideman #35944: I didn't see info on where to install the book's sample code, and it turns out to matter. Basically, the book's tree of source code assumes it ...more...
|
P1.0
17-Nov-08
|
|
|
24 |
#37124: using Dojo 1.2.3 it appears that "missingMessage" is incorrect and should instead be "invalidMessage" in order to display the correct prompt when doing text validation.
--Phil G #37124: using Dojo 1.2.3 it appears that "missingMessage" is incorrect and should instead be "invalidMessage" in order to display the correct prompt w ...more...
|
P1.0
18-Jan-09
|
|
|
26 |
#34112: When the email input is introduced, it makes it seem as if it is an old friend that was already there. But none of the html code mentions it and it isn't shown in Figure 2.1. Make sure it shows up in the figure and in the first div block on page 21.--Donald Albertson #34112: When the email input is introduced, it makes it seem as if it is an old friend that was already there. But none of the html code mentions it ...more...
|
P1.0
18-Aug-08
|
|
|
28 |
#35297: attribute 'missingMessage' is not used by any form js code, only 'invalidMessage' and 'rangeMessage'. (It's defined in the nls files, but not used!)
Also, attribute 'length' should actually be 'maxLength'.--Tom Shinnick #35297: attribute 'missingMessage' is not used by any form js code, only 'invalidMessage' and 'rangeMessage'. (It's defined in the nls files, but not ...more...
|
P1.0
16-Oct-08
|
|
| 29 |
|
#32340: <div class="formContainer" dojoType="dijit.layout.TabContainer"
style="width:600px;height:600px">
styles for width and height are already defined in .formContainer so it may be confusing to define them inline again. I tested on Safari3+, IE 6+7, FF2x without inline styles -> OK.--Michael Jaekel #32340: <div class="formContainer" dojoType="dijit.layout.TabContainer"
style="width:600px;height:600px">
styles for width and height are already ...more...
|
B5.0
10-Jun-08
|
|
|
35 |
#34333: The last name input field erroneously assumes that words in someones last name should be propercased. However that is not true for many names (e.g. with the last names between --: Werner -von Braun-, Marquise -de Sade-). The propercasing might be ok for some countries, but the form has a country field so things should be globally useable. --Anthon van der Neut #34333: The last name input field erroneously assumes that words in someones last name should be propercased. However that is not true for many names ...more...
|
P1.0
03-Sep-08
|
|
|
37 |
#36501: As was previously pointed out, the listing at the bottom of the page isn't passing valid parameters to "dojo.string.substitute()". Instead of "result" as in the listing, or "oneResult" as in the paragraph after the listing, the simplest fix is just "urls[i]".--David M. Karr #36501: As was previously pointed out, the listing at the bottom of the page isn't passing valid parameters to "dojo.string.substitute()". Instead of ...more...
|
P1.0
18-Dec-08
|
|
|
37 |
#33215: Last code snippet on the page: variable 'result' is not defined, and then the subsequent paragraph (p38) refers to oneResult, which is also not defined. (also noted in erratum #32561).--Michael Bannister #33215: Last code snippet on the page: variable 'result' is not defined, and then the subsequent paragraph (p38) refers to oneResult, which is also no ...more...
|
P1.0
26-Jul-08
|
|
|
38 |
#32561: top p. 38 'oneResult' does not seem to match up with preceding bottom page 37:
dojo.string.substitute("<a href='${url}'>${title}</a>", result);
--celeste morte
|
P1.0
01-Jul-08
|
|
| 44 |
|
#35466: The last for loop on that page says:
listItem.innerHTML = dojo.string.substitute("<a href='${url}'>${title}</a>", result);
I believe "result" should be urls[i] instead.--Filipp Lepalaan #35466: The last for loop on that page says:
listItem.innerHTML = dojo.string.substitute("<a href='${url}'>${title}</a>", result);
I believe "res ...more...
|
P1.0
26-Oct-08
|
|
|
53 |
#37129: Using 1.2.3, I can't get the Grid + Yahoo example to work at all. I get "DEPRECATED: dojox.grid.Grid" in the Firebug Console, but it doesn't seem to connect to or attempt to connect to Yahoo to search for the cigar. (I'm using the sample code from the Publisher's site.) Perhaps I'm doing something horribly wrong.--Phil G. #37129: Using 1.2.3, I can't get the Grid + Yahoo example to work at all. I get "DEPRECATED: dojox.grid.Grid" in the Firebug Console, but it doesn't s ...more...
|
P1.0
18-Jan-09
|
|
| 58 |
|
#35430: The page number in the case is actually a bit irrelevant, the problem resides in the /code/xhr_techniques/yahoo_remote_script.html file. Line #25 (dojo.require("dojox.grid._data.model");) returns a "Not Found" error. To fix this it should include the "compat" directory, so it would be written as:
dojo.require("dojox.grid.compat._data.model");--Jon Yamokoski #35430: The page number in the case is actually a bit irrelevant, the problem resides in the /code/xhr_techniques/yahoo_remote_script.html file. Line ...more...
|
P1.0
24-Oct-08
|
|
|
72 |
#34344: 4th line from bottom: remove '</script>' as the previous script tag closes with /> --Anthon van der Neut
|
P1.0
05-Sep-08
|
|
| 78 |
|
#32382: In line
<script type="text/javascript" src="/dojoroot/dojo/dojo.js" /></script>
remove the redundant end tag.--Thilo Goetz
|
B5.0
13-Jun-08
|
|
|
78 |
#33437: In the "dojo.hitch is important" sidebar, it says "JavaScript functions are not bound to the scope in which they're defined." But this is untrue, with one exception. JavaScript does lexically bind function definitions to the context in which they are defined. It is *only* the 'this' variable that behaves specially and promiscuously compared to all other variables.
The reason hitch works at all is because it makes use of JavaScript's lexical binding in defining the function that is returned.
--Daniel LaLiberte #33437: In the "dojo.hitch is important" sidebar, it says "JavaScript functions are not bound to the scope in which they're defined." But this is un ...more...
|
P1.0
01-Aug-08
|
|
|
89 |
#33436: "dojo.isString(test) ... either a string literal or a string variable." But variables don't have types, so there is no such thing as a string variable. And whether the argument expression contains just a variable is irrelevant to the value that dojo.isString sees. I believe what is intended instead of "string variable" is "string object", as in the result of new String().
--Daniel LaLiberte #33436: "dojo.isString(test) ... either a string literal or a string variable." But variables don't have types, so there is no such thing as a string ...more...
|
P1.0
01-Aug-08
|
|
|
98 |
#34119: This isn't really a typo -- it's a production error that should have been caught by the Q/A process.
In figure 6.2 there are several incomplete See references. Example class Event target says:
"See Event.target; see xxx for a discussion of bubbling."
--Donald Albertson #34119: This isn't really a typo -- it's a production error that should have been caught by the Q/A process.
In figure 6.2 there are several incomp ...more...
|
P1.0
19-Aug-08
|
|
|
98 |
#35212: In description of 'keyChar', shouldn't property-type be 'string'? And elsewhere, the 'boolen's s.b. 'boolean'--Tom Shinnick
|
P1.0
13-Oct-08
|
|
|
100 |
#36505: The code sample refers to the "stopProgagation()" method, instead of "stopPropagation()". Erratum #32469 points this out, but erroneously refers to "stopPropagation()" in the listing.--David M. Karr #36505: The code sample refers to the "stopProgagation()" method, instead of "stopPropagation()". Erratum #32469 points this out, but erroneously ref ...more...
|
P1.0
19-Dec-08
|
|
|
103 |
#35210: at end of first paragraph, 'addEventLister' should be 'addEventListener'--Tom Shinnick
|
P1.0
13-Oct-08
|
|
| 104 |
|
#37832: In Figure 6.2 ("The event interfaces"), there are six instances of:
"see xxx"
mostly in reference to "a discussion of bubbling".
|
P1.0
19-Feb-09
|
|
| 106 |
|
#32469: eventobj.stopPropagation(); should be eventObj.stopPropagation();
in all examples.
. --Michael Jaekel
|
P1.0
25-Jun-08
|
|
| 109 |
|
#34537: The 14 line of HTML code in this page says:"Events that can bubble always bubble; events never propagate."
I think the "events never never propagate" is not correct because bubble is propagation.--SunLiwei #34537: The 14 line of HTML code in this page says:"Events that can bubble always bubble; events never propagate."
I think the "events never never pr ...more...
|
P1.0
18-Sep-08
|
|
|
147 |
#35209: For selector "s1 s2", should be 'descendent' not 'decedent'--Tom Shinnick
|
P1.0
13-Oct-08
|
|
|
176 |
#35978: I am working through the exemplified dojo.xhr calls and the book states there is a Ruby WEBrick in the code download.
I can find no such "fictional server" and hence am uncertain and am not even sure what I'm looking for.
Love the book, especially the "IE comes with memory leaks for free!" spirit....that's brilliant.--David Cantillon #35978: I am working through the exemplified dojo.xhr calls and the book states there is a Ruby WEBrick in the code download.
I can find no such "fic ...more...
|
P1.0
19-Nov-08
|
|
|
187 |
#34346: In the description of figure 8.3: 'comma-filtered' should read 'comment-filtered'--Anthon van der Neut
|
P1.0
05-Sep-08
|
|
|
191 |
#33356: In the code snippet, the parameter 'synch: true' is given. According to all the text preceding, this should be 'sync: true'.--Michael Bannister
|
P1.0
29-Jul-08
|
|
|
197 |
#33355: The paragraph beginning 'When this code is evaluated...' does not match what the code in function example15() (on p195) actually does. There is no call to dojo.setObject, and object exercise15.myObject isn't defined anywhere.--Michael Bannister #33355: The paragraph beginning 'When this code is evaluated...' does not match what the code in function example15() (on p195) actually does. There ...more...
|
P1.0
29-Jul-08
|
|
|
207 |
#33360: In the code for function example21(), the key 'synch' in the args for dojo.xhrPut() should be 'sync'.--Michael Bannister
|
P1.0
29-Jul-08
|
|
|
214 |
#35447: This errata concerns the "Simple Single-Page Web App" found on page 214 to 219. The code works very well. However, when implementing this it causes all widget themes to not appear in the body of the dynamically generated pages.
For instance when implementing a Tundra progress bar the bar itself will fail to find the corresponding images thus not display. The same applies for tool tips as they also will not appear.
When i remove the javascript for this single page app, the corresponding images appear again.
Is there a work around for this?
--Chris #35447: This errata concerns the "Simple Single-Page Web App" found on page 214 to 219. The code works very well. However, when implementing this it ...more...
|
P1.0
25-Oct-08
|
|
|
224 |
#35940: Last bullet point on page: "This class is not drawn in the diagram because dojo.declare does implement multiple inheritance." Probably intended to say "does NOT implement".--Graham Wideman #35940: Last bullet point on page: "This class is not drawn in the diagram because dojo.declare does implement multiple inheritance." Probably intend ...more...
|
P1.0
16-Nov-08
|
|
| 269 |
|
#32552: Both versions of genetox_def.html on this page seem identical but the text would indicate that the second version should have something additional compared to the first--Scott Dixon #32552: Both versions of genetox_def.html on this page seem identical but the text would indicate that the second version should have something additi ...more...
|
P1.0
30-Jun-08
|
|
| 269 |
|
#32558: The filtering select example can't work as shown. With the searchAttr="docno", it recognizes only the document numbers as input (and only autocompletes based on numbers not substance names). This example is badly in need of proofreading and testing. As presented, if you select a substance name, it fills in the docno in the text box. If you type in a substance name from the select list, it doesn't recognize it.--Scott Dixon #32558: The filtering select example can't work as shown. With the searchAttr="docno", it recognizes only the document numbers as input (and only aut ...more...
|
P1.0
30-Jun-08
|
|
|
289 |
#38766: 289-291: Discussion of baseUrl & registerModulePath():
(1) If baseUrl is changed from where Dojo is, how would Dojo modules be found?
(2) How can one baseUrl serve for both Dojo and the user's own classes which may be in different domains? (3) More specifically, assuming registerModulePath() has to be given a relative path (since the same app is deployed in multiple domains)--relative to the main document root, and assuming Dojo is loaded cross-domain (e.g. from AOL CDN), how can the baseUrl and registerModulePath() path be set to find the user's modules?
(4) Item 3: "if the URL (now guaranteed to be absolute)": this doesn't seem to be the case: what if dojo.baseUrl is itself relative, e.g. "."?
(5) Footnote 6 is unclear: what release had the issue? What is the ticket #? Why was it suspected that this wouldn't be fixed by the time the book was printed? When will it be fixed? (6) Footnote 6: "same-origin issue should always have a relative path": it seems to me this is only true if it's in the same web app; if it's a different web app or even a different web server on the same host, I don't think there's a reasonable way to specify a relative path on filesystem, with all the mapping/protection/etc. issues that may be involved. Therefore the "odd behavior" is an issue.
[By "unclear", I mean I am not able to get the scenario on (3) above to work.]
--Tom Meyer #38766: 289-291: Discussion of baseUrl & registerModulePath():
(1) If baseUrl is changed from where Dojo is, how would Dojo modules be found?
(2) Ho ...more...
|
P1.0
06-Apr-09
|
|
|
328 |
#35946: <label for="newUrl">Title:</label>
... should be...
<label for="newTitle">Title:</label>--Graham Wideman
|
P1.0
17-Nov-08
|
|
|
398 |
#34633: in the code sample, there's a closing tag (</script>)
without an opening <script> tag or body. Looks like you're missing a line or two.--Keith
|
P1.0
25-Sep-08
|
|
|
408 |
#36629: In the subsection "Notifications with Toaster" just before section 15.4, two code samples are listed. The first one is indicated to be how to set up a Toaster. The second one is indicated to be the process for simulating a long-running process with buttons. The second code sample is identical to the first code sample, being the code for setting up the toaster. The second code sample should show creating buttons to simulate the long-running process.--David M. Karr #36629: In the subsection "Notifications with Toaster" just before section 15.4, two code samples are listed. The first one is indicated to be how to ...more...
|
P1.0
26-Dec-08
|
|
|
414 |
#34345: 2nd bullet item on the page: 'pattern specifies ...' should be
'datePattern specifies ...'. In the example on page 415 this is correct.--Anthon van der Neut
|
P1.0
05-Sep-08
|
|
|
447 |
#38483: 16.5 The Alignment Container: BorderContainer
Example contains
...
<div dojoType="dijit.layout.ContentPane" region="center"
style="height:<<region height>>">
Center content Pane content
</div>
But, in the third paragraph following the example, it is stated :
"...The center region must not have dimensions, however. ..."
The statement and the explanation are in conflict.
--Brock #38483: 16.5 The Alignment Container: BorderContainer
Example contains
...
<div dojoType="dijit.layout.ContentPane" region="center"
style=" ...more...
|
B5.0
23-Mar-09
|
|
|
482 |
#33170: The web address for Vista Information Technologies in the footnote should be www.vista-info-tech.com.--Rawld Gill
|
P1.0
24-Jul-08
|
|
| 488 |
|
#35295: For example, the loader will try to load /dojoroot obe/main.js when the module ***obe.man*** is dojo.required.
-should read-
For example, the loader will try to load /dojoroot/obe/main.js when the module obe.main is dojo.required.--Bakki Kudva #35295: For example, the loader will try to load /dojoroot obe/main.js when the module ***obe.man*** is dojo.required.
-should read-
For example ...more...
|
P1.0
16-Oct-08
|
|
|
490 |
#33013: At the end of the page (5 lines from the end) it mentions the "obe.man" module and should be "obe.main"--Emilio Suarez
|
P1.0
10-Jul-08
|
|
|
491 |
#35927: Error when using dijit.layout.BorderContainer and dijit.layout.ContentPane and dojo version 1.2.1.
In the code it says:
Line 46: var appContainer = main.appContainer = new dijit.layout.BorderContainer({
//....
/ ....
Line 61: appContainer.layout();
Using appContainer.layout(); throws a Javascript error. For me the error was "PE undefined". The solution was to use: appContainer.startup(); instead.
--Kokopelli #35927: Error when using dijit.layout.BorderContainer and dijit.layout.ContentPane and dojo version 1.2.1.
In the code it says:
Line 46: var appCo ...more...
|
P1.0
16-Nov-08
|
|
|
493 |
#33011: At the end of the section 18.2 (Step 1), the instructions say to start the local HTTP server and navigate to obe.htm, but it should say main.htm instead.
--Emilio Suarez #33011: At the end of the section 18.2 (Step 1), the instructions say to start the local HTTP server and navigate to obe.htm, but it should say main.h ...more...
|
P1.0
10-Jul-08
|
|
|
533 |
#36407: sophsticated -> sophisticated--Jeremy Flowers
|
P1.0
12-Dec-08
|
|