Recent Posts

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... […]

Opacity in IE6: alpha or PNG?

I was fighting with a problem today that I thought I’d share. I’m using some semi-transparent div elements to create certain effects on a page and got pinged with a memory bug. After some tests, I discovered that the source of the memory issue was the use of IE6′s alpha filter: .shade { filter: alpha(opacity=70);... […]

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... […]

Copyright © 2004-2016 Nicholas C. Zakas. All Rights Reserved. All code examples on all pages, unless otherwise indicated, are BSD licensed. Blog Feed