About Nicholas C. Zakas

Recent Posts

Interesting JavaScript string capability

Reading through ECMA-262 and taking a look at Rhino‘s source code, I came across something interesting. Apparently, it is possible to have a JavaScript string begin on one line of code and end on another line of code. For example: var s /*:String*/ = "Test \ multi \ line."; alert(s); This is perfectly valid; the... […]

The JavaScript download gotcha

Ajax solutions typically take into account that HTTP 1.1-compliant servers will allow only two connections to a single client at the same time. Or rather, two connections per domain name. There has been some mention of workaround techniques to speed up communication. Using different domain names can allow up to six simultaneous connections, which is... […]

Standards with sanity

A lot has been made out of the importance of staying within web standards and making sure that your code is semantically correct. The biggest thing that so-called experts talk about is the avoidance of using tables. Really, they mean not to use tables for layout. The argument is that the markup should be able... […]

Professional Ajax – Amazon’s #8 best tech book of 2006!

Just got pinged by my editor Jim about this: Top 10 Editors’ Picks: Computers & Internet. If you scroll down to #8, you’ll see Professional Ajax! Words can’t describe how excited I am about this. To be on this list is amazing, and the fact that it’s the only Ajax book on the list makes... […]

Browser detection versus feature detection

One of the more controversial chapters in my first book was the chapter on browser detection. I got flaming emails, blog comments, and reviews about the user-agent string detecting method, telling me that I was falsely promoting an outdated methodology for dealing with browser differences. Feature detection is the ideal, they all said, and that... […]

Minimizing closure usage

Been meaning to blog about this for a while, but just kept forgetting. Over at the Atlas and More Blog, Bertrand Le Roy has posted two articles on converting object definitions from using closures to using prototypes. Though the postings are mostly about using the latest version of Atlas, there is some good discussion of... […]

Congratulations to YUI team

The folks over at Linux Journal have named the Yahoo! User Interface (YUI) Library as the Editors’ Choice Software Module or Library for 2006! Congratulations to the team, they’re some of the brightest, hardest-working people in the tech industry and they consistently produce quality stuff. Even before I started at Yahoo!, the YUI Library was... […]

Adobe open sources Flash JavaScript engine

The other day, it was announced that Adobe would be submitting the source code of Tamarin, the JavaScript engine used in Flash, to Mozilla for open sourcing. In turn, Mozilla will be using it in future editions of Firefox. Why does this matter? The most important thing is that Tamarin is a just-in-time JavaScript compiler,... […]

The absorb() method

After reviewing the comments from everyone on the previous post, I’ve come up with the next generation of the absorb() function: the absorb() method. It occurred to me that this function really was begging to be a method of Object. So, without further adieu: Object.absorb = function (destination /*:Object*/, source /*:Object*/, overwrite /*:Boolean*/) /*:Object*/ {... […]

IE’s innerHTML problem

How do you remove content from an element that’s already been added? The fastest way is to use innerHTML and set it to an empty string. Boom! The content is now gone. This is much faster than going through and removing each child using removeChild(). But there’s a problem with this approach in Internet Explorer.... […]