- Animation
- Application design
- ASP.NET
- C#, .NET 3.5
- Controls
- Data access
- Effects
- Expression Blend
- Expression Design
- Game development
- Graphics
- Javascript and AJAX
- Math and Physics
- Media streaming
- Multimedia
- Security
- Silverlight
- Styling
- UI Design
- VB.NET
- Video
- Visual Studio
- WCF
- WPF
- XAML
BlueForest Networks
JavaScript: The Definitive Guide
Publisher: O'Reilly Media, Inc.
- August 17, 2006
ISBN-10: 0596101996, ISBN-13: 9780596101992
Author: David Flanagan
1018 pages
One of the top-selling books
JavaScript: The Definitive Guide - book reviews: 292
Though he does not cover server-side APIs, Flanagan has chosen to separate coverage of core JavaScript (all the keywords, general syntax, and utility objects like Array) from coverage of client-side JavaScript (which includes objects, like History and Event, that have to do with Web browsers and users' interactions with them. This approach makes this book useful to people using JavaScript for applications other than Web pages. By the way, the other classic JavaScript text--Danny Goodman's JavaScript Bible--isn't as current as this book, but it's still a fantastic (and perhaps somewhat more novice-friendly) guide to the JavaScript language and its capabilities. --David Wall
Topics covered: The JavaScript language (version 1.0 through version 1.5) and its relatives, JScript and ECMAScript, as well as the W3C DOM standards they're often used to manipulate. Tutorial sections show how to program in JavaScript, while reference sections summarize syntax and options while providing copious code examples.This Fifth Edition is completely revised and expanded to cover JavaScript as it is used in today's Web 2.0 applications. This book is both an example-driven programmer's guide and a keep-on-your-desk reference, with new chapters that explain everything you need to know to get the most out of JavaScript, including: Scripted HTTP and Ajax XML processing Client-side graphics using the canvas tag Namespaces in JavaScript--essential when writing complex programs Classes, closures, persistence, Flash, and JavaScript embedded in Java applications
Part I explains the core JavaScript language in detail. If you are new to JavaScript, it will teach you the language. If you are already a JavaScript programmer, Part I will sharpen your skills and deepen your understanding of the language.
Part II explains the scripting environment provided by web browsers, with a focus on DOM scripting with unobtrusive JavaScript. The broad and deep coverage of client-side JavaScript is illustrated with many sophisticated examples that demonstrate how to: Generate a table of contents for an HTML document Display DHTML animations Automate form validation Draw dynamic pie charts Make HTML elements draggable Define keyboard shortcuts for web applications Create Ajax-enabled tool tips Use XPath and XSLT on XML documents loaded with Ajax And much more
Part III is a complete reference for core JavaScript. It documents every class, object, constructor, method, function, property, and constant defined by JavaScript 1.5 and ECMAScript Version 3.
Part IV is a reference for client-side JavaScript, covering legacy web browser APIs, the standard Level 2 DOM API, and emerging standards such as the XMLHttpRequestobject and the canvas tag.
More than 300,000 JavaScript programmers around the world have made this their indispensable reference book for building JavaScript applications.
""A must-have reference for expert JavaScript programmers...well-organized and detailed."" -- Brendan Eich, creator of JavaScript
Chapter 1. Introduction to JavaScript
JavaScript Myths, Versions of JavaScript, Client-Side JavaScript, JavaScript in Other Contexts, Client-Side JavaScript: Executable Content in Web Pages, Client-Side JavaScript Features, JavaScript Security, Example: Computing Loan Payments with JavaScript, Using the Rest of This Book, Exploring JavaScript
Part I: Core JavaScript
Chapter 2. Lexical Structure
Character Set, Case Sensitivity, Whitespace and Line Breaks, Optional Semicolons, Comments, Literals, Identifiers, Reserved Words
Chapter 3. Data Types and Values
Numbers, Strings, Boolean Values, Functions, Objects, Arrays, null, undefined, The Date Object, Regular Expressions, Error Objects, Primitive Data Type Wrapper Objects
Chapter 4. Variables
Variable Typing, Variable Declaration, Variable Scope, Primitive Types and Reference Types, Garbage Collection, Variables as Properties, Variable Scope Revisited
Chapter 5. Expressions and Operators
Expressions, Operator Overview, Arithmetic Operators, Equality Operators, Relational Operators, String Operators, Logical Operators, Bitwise Operators
Assignment Operators, Miscellaneous Operators
Chapter 6. Statements
Expression Statements, Compound Statements, if, else if, switch, while, do/while, for, for/in, Labels, break, continue, var, function, return, throw, try/catch/finally
with, The Empty Statement, Summary of JavaScript Statements
Chapter 7. Functions
Defining and Invoking Functions, Functions as Data, Function Scope: The Call Object, Function Arguments: The Arguments Object, Function Properties and Methods
Chapter 8. Objects
Objects and Properties, Constructors, Methods, Prototypes and Inheritance, Object-Oriented JavaScript, Objects as Associative Arrays, Object Properties and Methods
Chapter 9. Arrays
Arrays and Array Elements, Array Methods
Chapter 10. Pattern Matching with Regular Expressions
Defining Regular Expressions, String Methods for Pattern Matching, The RegExp Object
Chapter 11. Further Topics in JavaScript
Data Type Conversion, By Value Versus by Reference, Garbage Collection, Lexical Scoping and Nested Functions, The Function( ) Constructor and Function Literals, Netscape's JavaScript 1.2 Incompatibilities
Part II: Client-Side JavaScript
Chapter 12. JavaScript in Web Browsers, The Web Browser Environment, Embedding JavaScript in HTML, Execution of JavaScript Programs,
Chapter 13. Windows and Frames
Window Overview, Simple Dialog Boxes, The Status Line, Timeouts and Intervals, Error Handling, The Navigator Object, The Screen Object, Window Control Methods, The Location Object, The History Object, Multiple Windows and Frames
Chapter 14. The Document Object
Document Overview, Dynamically Generated Documents, Document Color Properties, Document Information Properties, Forms, Images, Links, Anchors
Applets, Embedded Data
Chapter 15. Forms and Form Elements
The Form Object, Defining Form Elements, Scripting Form Elements, Form Verification Example
Chapter 16. Scripting Cookies
An Overview of Cookies, Storing Cookies, Reading Cookies, Cookie Example
Chapter 17. The Document Object Model
An Overview of the DOM, Using the Core DOM API, DOM Compatibility with Internet Explorer 4, DOM Compatibility with Netscape 4, Convenience Methods: The Traversal and Range APIs
Chapter 18. Cascading Style Sheets and Dynamic HTML
Styles and Style Sheets with CSS, Element Positioning with CSS, Scripting Styles, DHTML in Fourth-Generation Browsers, Other DOM APIs for Styles and Style Sheets
Chapter 19. Events and Event Handling
Basic Event Handling, Advanced Event Handling with DOM Level 2, The Internet Explorer Event Model, The Netscape 4 Event Model
Chapter 20. Compatibility Techniques
Platform and Browser Compatibility, Language Version Compatibility, Compatibility with Non-JavaScript Browsers
Chapter 21. JavaScript Security
JavaScript and Security, Restricted Features, The Same-Origin Policy, Security Zones and Signed Scripts
Chapter 22. Using Java with JavaScript
Scripting Java Applets, Using JavaScript from Java, Using Java Classes Directly, LiveConnect Data Types, LiveConnect Data Conversion, JavaScript Conversion of JavaObjects, Java-to-JavaScript Data Conversion
Part III: Core JavaScript Reference
Chapter 23. Core JavaScript Reference, Sample Entry, arguments[ ], Arguments, Arguments.callee, Arguments.length, Array, Array.concat( ), Array.join( ), Array.length, Array.pop( ), Array.push( ), Array.reverse( ), Array.shift( ), Array.slice( ), Array.sort( ), Array.splice( ), Array.toLocaleString( ), Array.toString( ), Array.unshift( ), Boolean, Boolean.toString( ), Boolean.valueOf( ), Date, Date.getDate( ), Date.getDay( ), Date.getFullYear( ), Date.getHours( ), Date.getMilliseconds( ), Date.getMinutes( ), Date.getMonth( ), Date.getSeconds( ), Date.getTime( ), Date.getTimezoneOffset( ), Date.getUTCDate( ), Date.getUTCDay( ), Date.getUTCFullYear( ), Date.getUTCHours( ), Date.getUTCMilliseconds( ), Date.getUTCMinutes( ), Date.getUTCMonth( ), Date.getUTCSeconds( ), Date.getYear( ), Date.parse( ), Date.setDate( ), Date.setFullYear( ), Date.setHours( ), Date.setMilliseconds( ), Date.setMinutes( ), Date.setMonth( ), Date.setSeconds( ), Date.setTime( ), Date.setUTCDate( ), Date.setUTCFullYear( ), Date.setUTCHours( ), Date.setUTCMilliseconds( ), Date.setUTCMinutes( ), Date.setUTCMonth( ), Date.setUTCSeconds( ), Date.setYear( ), Date.toDateString( ), Date.toGMTString( ), Date.toLocaleDateString( ), Date.toLocaleString( ) , Date.toLocaleTimeString( ), Date.toString( ), Date.toTimeString( ), Date.toUTCString( ), Date.UTC( ), Date.valueOf( ), decodeURI( ), decodeURIComponent( ), encodeURI( ), encodeURIComponent( ), Error, Error.message, Error.name, Error.toString( ), escape( ), eval( ), EvalError, Function, Function.apply( ), Function.arguments[], Function.call( ), Function.caller, Function.length, Function.prototype, Function.toString( ), Global, Infinity, isFinite( ), isNaN( ), Math, Math.abs( ), Math.acos( ), Math.asin( ), Math.atan( ), Math.atan2( ), Math.ceil( ), Math.cos( ), Math.E, Math.exp( ), Math.floor( ), Math.LN10, Math.LN2, Math.log( ), Math.LOG10E, Math.LOG2E, Math.max( ), Math.min( ), Math.PI, Math.pow( ), Math.random( ), Math.round( ), Math.sin( ), Math.sqrt( ), Math.SQRT1_2 , Math.SQRT2, Math.tan( ), NaN, Number, Number.MAX_VALUE, Number.MIN_VALUE, Number.NaN, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.toExponential( ), Number.toFixed( ), Number.toLocaleString( ), Number.toPrecision( ), Number.toString( ), Number.valueOf( ), Object, Object.constructor, Object.hasOwnProperty( ), Object.isPrototypeOf( ), Object.propertyIsEnumerable( ), Object.toLocaleString( ), Object.toString( ), Object.valueOf( ), parseFloat( ), parseInt( ), RangeError, ReferenceError, RegExp, RegExp.exec( ), RegExp.global, RegExp.ignoreCase, RegExp.lastIndex, RegExp.source, RegExp.test( ), RegExp.toString( ), String, String.charAt( ), String.charCodeAt( ), String.concat( ), String.fromCharCode( ), String.indexOf( ), String.lastIndexOf( ), String.length, String.localeCompare( ), String.match( ), String.replace( ), String.search( ), String.slice( ), String.split( ), String.substr( ), String.substring( ), String.toLocaleLowerCase( ), String.toLocaleUpperCase( ), String.toLowerCase( ), String.toString( ), String.toUpperCase( ), String.valueOf( ), SyntaxError, TypeError, undefined, unescape( ), URIError
Part IV: Client-Side JavaScript Reference
Chapter 24. Client-Side JavaScript Reference
Sample Entry, Anchor, Applet, Area, Button, Button.onclick, Checkbox, Checkbox.onclick, Document, Document.all[], Document.captureEvents( ), Document.clear( ), Document.close( ), Document.cookie, Document.domain, Document.elementFromPoint( ), Document.getSelection( ), Document.handleEvent( ), Document.lastModified, Document.links[], Document.open( ), Document.releaseEvents( ), Document.routeEvent( ), Document.URL, Document.write( ), Document.writeln( ), Element, Event, FileUpload, FileUpload.onchange, Form, Form.elements[], Form.onreset, Form.onsubmit, Form.reset( ), Form.submit( ), Form.target, Frame, getClass( ), Hidden, History, History.back( ), History.forward( ), History.go( ), HTMLElement ,HTMLElement.contains( ), HTMLElement.getAttribute( ), HTMLElement.handleEvent( ), HTMLElement.insertAdjacentHTML( ), HTMLElement.insertAdjacentText( ), HTMLElement.onclick, HTMLElement.ondblclick, HTMLElement.onhelp, HTMLElement.onkeydown, HTMLElement.onkeypress, HTMLElement.onkeyup, HTMLElement.onmousedown, HTMLElement.onmousemove, HTMLElement.onmouseout, HTMLElement.onmouseover, HTMLElement.onmouseup, HTMLElement.removeAttribute( ), HTMLElement.scrollIntoView( ), HTMLElement.setAttribute( ), Image, Image.onabort, Image.onerror, Image.onload, Input, Input.blur( ), Input.click( ), Input.focus( ) , Input.name, Input.onblur, Input.onchange, Input.onclick, Input.onfocus, Input.select( ), Input.type, Input.value, JavaArray, JavaClass, JavaObject, JavaPackage, JSObject, JSObject.call( ), JSObject.eval( ), JSObject.getMember( ), JSObject.getSlot( ), JSObject.getWindow( ), JSObject.removeMember( ), JSObject.setMember( ), JSObject.setSlot( ), JSObject.toString( ), Layer, Layer.captureEvents( ), Layer.handleEvent( ), Layer.load( ), Layer.moveAbove( ), Layer.moveBelow( ), Layer.moveBy( ), Layer.moveTo( ), Layer.moveToAbsolute( ), Layer.offset( ), Layer.releaseEvents( ), Layer.resizeBy( ), Layer.resizeTo( ), Layer.routeEvent( ), Link, Link.onclick, Link.onmouseout, Link.onmouseover, Link.target, Location, Location.reload( ), Location.replace( ), MimeType, Navigator, Navigator.javaEnabled( ), Navigator.plugins.refresh( ), Option, Password, Plugin, Radio, Radio.onclick, Reset, Reset.onclick, Screen, Select, Select.onchange, Select.options[], Style, Submit, Submit.onclick, Text, Text.onchange, Textarea, Textarea.onchange, URL, Window, Window.alert( ), Window.back( ), Window.blur( ) , Window.captureEvents( ), Window.clearInterval( ), Window.clearTimeout( ), Window.close( ), Window.confirm( ), Window.defaultStatus, Window.focus( ), Window.forward( ), Window.handleEvent( ), Window.home( ), Window.moveBy( ), Window.moveTo( ), Window.name, Window.navigate( ), Window.onblur, Window.onerror, Window.onfocus, Window.onload, Window.onmove, Window.onresize, Window.onunload, Window.open( ), Window.print( ), Window.prompt( ), Window.releaseEvents( ), Window.resizeBy( ), Window.resizeTo( ), Window.routeEvent( ), Window.scroll( ), Window.scrollBy( ), Window.scrollTo( ), Window.setInterval( ), Window.setTimeout( ), Window.status, Window.stop( )
Part V: W3C DOM Reference
Chapter 25. W3C DOM Reference, Sample Entry, AbstractView, AbstractView.getComputedStyle( ), Attr, CDATASection, CharacterData, CharacterData.appendData( ), CharacterData.deleteData( ), CharacterData.insertData( ), CharacterData.replaceData( ), CharacterData.substringData( ),
Comment, Counter, CSS2Properties, CSSCharsetRule, CSSFontFaceRule, CSSImportRule, CSSMediaRule, CSSMediaRule.deleteRule( ), CSSMediaRule.insertRule( ), CSSPageRule, CSSPrimitiveValue, CSSPrimitiveValue.getCounterValue( ), CSSPrimitiveValue.getFloatValue( ), CSSPrimitiveValue.getRectValue( ), CSSPrimitiveValue.getRGBColorValue( ), CSSPrimitiveValue.getStringValue( ), CSSPrimitiveValue.setFloatValue( ), CSSPrimitiveValue.setStringValue( ), CSSRule, CSSRuleList, CSSRuleList.item( ), CSSStyleDeclaration, CSSStyleDeclaration.getPropertyCSSValue( ) , CSSStyleDeclaration.getPropertyPriority( ), CSSStyleDeclaration.getPropertyValue( ), CSSStyleDeclaration.item( ), CSSStyleDeclaration.removeProperty( ), CSSStyleDeclaration.setProperty( ), CSSStyleRule, CSSStyleSheet, CSSStyleSheet.deleteRule( ), CSSStyleSheet.insertRule( ), CSSUnknownRule, CSSValue, CSSValueList, CSSValueList.item( ), Document, Document.createAttribute( ), Document.createAttributeNS( ), Document.createCDATASection( ), Document.createComment( ), Document.createDocumentFragment( ), Document.createElement( ), Document.createElementNS( ), Document.createEntityReference( ), Document.createEvent( ), Document.createNodeIterator( ), Document.createProcessingInstruction( ), Document.createRange( ), Document.createTextNode( ), Document.createTreeWalker( ), Document.getElementById( ), Document.getElementsByTagName( ), Document.getElementsByTagNameNS( ), Document.getOverrideStyle( ), Document.importNode( ), DocumentCSS, DocumentEvent, DocumentFragment, DocumentRange, DocumentStyle, DocumentTraversal, DocumentType, DocumentView, DOMException, DOMImplementation, DOMImplementation.createCSSStyleSheet( ), DOMImplementation.createDocument( ), DOMImplementation.createDocumentType( ), DOMImplementation.createHTMLDocument( ), DOMImplementation.hasFeature( ), DOMImplementationCSS, Element, Element.getAttribute( ), Element.getAttributeNode( ), Element.getAttributeNodeNS( ), Element.getAttributeNS( ), Element.getElementsByTagName( ), Element.getElementsByTagNameNS( ), Element.hasAttribute( ), Element.hasAttributeNS( ), Element.removeAttribute( ), Element.removeAttributeNode( ), Element.removeAttributeNS( ), Element.setAttribute( ), Element.setAttributeNode( ), Element.setAttributeNodeNS( ), Element.setAttributeNS( ), ElementCSSInlineStyle, Entity, EntityReference, Event, Event.initEvent( ), Event.preventDefault( ), Event.stopPropagation( ), EventException, EventListener, EventTarget, EventTarget.addEventListener( ), EventTarget.dispatchEvent( ), EventTarget.removeEventListener( ), HTMLAnchorElement, HTMLAnchorElement.blur( ), HTMLAnchorElement.focus( ), HTMLBodyElement, HTMLCollection, HTMLCollection.item( ), HTMLCollection.namedItem( ), HTMLDocument, HTMLDocument.close( ), HTMLDocument.getElementById( ), HTMLDocument.getElementsByName( ), HTMLDocument.open( ), HTMLDocument.write( ), HTMLDocument.writeln( ), HTMLDOMImplementation, HTMLElement, HTMLFormElement, HTMLFormElement.reset( ), HTMLFormElement.submit( ), HTMLInputElement, HTMLInputElement.blur( ), HTMLInputElement.click( ), HTMLInputElement.focus( ), HTMLInputElement.select( ), HTMLOptionElement, HTMLSelectElement, HTMLSelectElement.add( ), HTMLSelectElement.blur( ), HTMLSelectElement.focus( ), HTMLSelectElement.remove( ), HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement, HTMLTableElement, HTMLTableElement.createCaption( ), HTMLTableElement.createTFoot( ), HTMLTableElement.createTHead( ), HTMLTableElement.deleteCaption( ) , HTMLTableElement.deleteRow( ), HTMLTableElement.deleteTFoot( ), HTMLTableElement.deleteTHead( ), HTMLTableElement.insertRow( ), HTMLTableRowElement, HTMLTableRowElement.deleteCell( ) , HTMLTableRowElement.insertCell( ), HTMLTableSectionElement , HTMLTableSectionElement.deleteRow( ), HTMLTableSectionElement.insertRow( ) , HTMLTextAreaElement, HTMLTextAreaElement.blur( ), HTMLTextAreaElement.focus( ), HTMLTextAreaElement.select( ), LinkStyle, MediaList, MediaList.appendMedium( ), MediaList.deleteMedium( ), MediaList.item( ) , MouseEvent, MouseEvent.initMouseEvent( ), MutationEvent, MutationEvent.initMutationEvent( ), NamedNodeMap, NamedNodeMap.getNamedItem( ), NamedNodeMap.getNamedItemNS( ), NamedNodeMap.item( ), NamedNodeMap.removeNamedItem( ), NamedNodeMap.removeNamedItemNS( ), NamedNodeMap.setNamedItem( ), NamedNodeMap.setNamedItemNS( ), Node, Node.appendChild( ), Node.cloneNode( ), Node.hasAttributes( ), Node.ChildNodes( ) , Node.insertBefore( ), Node.isSupported( ), Node.normalize( ), Node.removeChild( ), Node.replaceChild( ), NodeFilter, NodeIterator, NodeIterator.detach( ), NodeIterator.nextNode( ), NodeIterator.previousNode( ), NodeList, NodeList.item( ), Notation, ProcessingInstruction, Range, Range.cloneContents( ), Range.cloneRange( ), Range.collapse( ), Range.compareBoundaryPoints( ), Range.deleteContents( ), Range.detach( ), Range.extractContents( ), Range.insertNode( ), Range.selectNode( ), Range.selectNodeContents( ), Range.setEnd( ), Range.setEndAfter( ), Range.setEndBefore( ), Range.setStart( ), Range.setStartAfter( ), Range.setStartBefore( ), Range.surroundContents( ), Range.toString( ), RangeException, Rect, RGBColor, StyleSheet, StyleSheetList, StyleSheetList.item( ), Text, Text.splitText( ), TreeWalker, TreeWalker.firstChild( ), TreeWalker.lastChild( ), TreeWalker.nextNode( ), TreeWalker.nextSibling( ), TreeWalker.parentNode( ), TreeWalker.previousNode( ), TreeWalker.previousSibling( ), UIEvent, UIEvent.initUIEvent( ), ViewCSS
Part VI: Class, Property, Method, and Event Handler Index
Chapter 26. Class, Property, Method, and Event Handler Index
Comprehensive book explains Javascript realities
I'm still getting into this book, but so far it has done a good job of explaining what is a new technology to me. I have some web development experience and this book hits me at the right level.
See Reverse
30 December, 2007
Good textbook, great reference
This refers to the 5th edition.
Ten years ago, JavaScript support was so different among various web browsers, I gave up trying to do any logical processing in JavaScript, and went into server-side programming.
Today, you still have to do a select few things two or three times in JavaScript to get them to work in all web browsers. But with much better standardization across browsers -- including broad support for Ajax, or remote scripting -- it's become worthwhile again to spend time on JavaScript development.
So, I took an online JavaScript class at the local community college. I bought this book as my reading text.
This "bible" of JavaScript skimps at times on simple examples, but provides several lengthy general-purpose code samples that show how to abstract out the client-specific or case-specific handling from an underlying set of routines.
Only the first part of this book is instructional. Then, there is the wonderful second half of the book, which is all reference. Divided into the core language reference and the client-side JavaScript reference, it's an essential quick lookup tool.
If you are new to JavaScript or (like me) brushing up on it after a long time away, choose this book as your in-depth background information and your ongoing reference text. Choose something like Dori Smith's JavaScript and Ajax for the Web, Sixth Edition (Visual QuickStart Guide) for your smaller, quick-start examples to play with.
Unfortunately, as long as browsers don't all support all the same JavaScript and CSS, there is still too much tedious hacking needed to provide a useful interface on the client side. Neither this book nor any other will get you past that little problem.
Genny
24 December, 2007
Excellent guidebook
Well written and concise language description. Especially good for programmers who want to learn the language.
Chad Weisshaar
30 November, 2007
a truly definitive guide
I knew next to nothing about javascript when I bought this book. I am not a professional programmer.
After twice reading the theoretical section (the first half of the book) attentively, I was able to program some pretty interesting things with javascript. The book provided sufficient grounding for me to fly solo and use my imagination. The reference section has been valuable for this.
I have read some of the negative reviews, and while I understand reviews that say this book could be more direct, practical and concise, I disagree with them as I found the author provided a very comprehensive narrative description of javascript including its nuances.
The author is in command of the topic, he provides solid targeted examples, and alerts you the salient points in those examples. He is teacher.
I have several other javascript books, but I return to this one regularly. Finding that the others are too cookbook oriented and do not give a sufficient grounding to solve complex problems.
The only thing that worries me is the quality of the cover and binding... while holding up.. my book is already looking tatty after just a couple of months. The book is an accessible javascript companion.
Marten K
24 November, 2007
What more could you want?
I ordinarily like to say that JavaScript is the worst programming language known to man, but I just read "Programming in Lua" and don't think I can continue in this practice. Nevertheless, it's pretty bad. From its lack of anything remotely resembling an "include" statement to its closures-over-classes OOP implementation, there is nothing pleasant about working in JavaScript, and that's why we need this book--to explain all the bizarre, counterintuitive nuances of scope resolution, interpreter variations and whatever all else the Netscape crackheads who forced this travesty on the world came up with.
Some people seem to think that any book that has the word "JavaScript" in its title should be packed full of code they can simply copy and paste until they have a bangin' new social networking startup site that's going to revolutionize the way we think about horrible photography, and those people are the ones who are disappointed with what they got. While AJAX and DOM scripting are discussed at considerable length here, this is not a book about making flashy, annoying websites.
orangekay
31 October, 2007