About Nicholas C. Zakas

Recent Posts


In response to a previous post, I was challenged to come up with a way to determine that elements had certain similarities without using CSS queries. Since this may benefit others, I decided to spin off the long comment thread into another post. I’ve called my solution getElementsMatching(): function getElementsMatching(tagName, matcher) { var elements =... […]

What’s Nicholas doing now?

Over the past month, I’ve been contacted by people asking my input on JavaScript-related topics for things they’ve been working on. I’m always interested in dropping my opinion on whoever it is that will listen, so I said sure. Now, the first wave of these are hitting the Web. In case you’re bored at work,... […]

What’s the deal with CSS query engines?

Lately, there seems to have been an explosion of client-side CSS query. The current offerings are: jQuery MochiKit Prototype Behaviour DomQuery dojo.query The free market tends to work in such a way as to saturate itself when consumer demand is high, but I really question the value of these engines. Was there really a demand... […]

Announcing Professional Ajax, Second Edition

It’s with great excitement that I’d like to announce the upcoming release of Professional Ajax, Second Edition next month. Due to the tight deadlines we had for the first edition, I simply didn’t have the time to put as much into the book as I had originally planned. I always had it in the back... […]

Event order of blur and change

I’m in the middle of fighting a battle with the blur and change events on a textbox. The requirement is simple: if the text changed in the textbox after losing focus, do one thing; if the text hasn’t changed when the textbox loses focus, do something else. This led me to an experiment to determine... […]

IE vs. PNG: The battle continues

Just when I thought I had figured out the rules of engagement between Internet Explorer and opacity, another hurdle arose. I figured with IE7 sporting brand-new native support for PNGs with an alpha channel that the best way to implement opacity (per my previous entry) would be to just use a semi-transparent PNG and assign... […]

What CSS is missing

It appears that CSS 3 will be the final iteration of the language. Undoubtedly, there’s some cool layout stuff in there along with everyone’s favorite tricks like rounded corners and opacity. However, I’m pretty dismayed if this is the end of CSS because I think there’s a very important concept still missing: variables. I, like... […]

Security vs. usability

It seems like everyone is trying to make their web site more secure these days. The “image seal” has become more popular (asking you to select an image that displays on the login page so that you know it’s the actual web site and not a phishing site), now being used on several high-traffic sites... […]

Spam insights

I’m always complaining about spam, having changed email addresses many times to try to escape, but I’ve never really understood the economics of spam all that well. Today I saw this great post explaining a little bit about why I get nonsensical emails seemingly selling nothing all the time: they’re poisoning the spam filters! Personally,... […]

Feature detection != browser detection

I’m not sure what’s in the water, but lately I’ve been coming across a lot of confusion regarding the difference between feature detection and browser detection. There are a lot of people who don’t like using the user-agent string to determine the browser (I, of course, am a big proponent of it), favoring instead the... […]