Introduction to browsers

For more browser information see Chuck Upsdell's Browser News. In general it keeps closer track of security fixes and new versions than my site.

Pretty soon you'll notice that the most difficult part of web development is knowing which browsers support what code. On these pages I've gathered some hints, tricks and information that I happen to have available. They are not complete, nor are they meant to be (keeping these notes complete and up-to-date would be a full-time job for ten people).

Web developers spend hours on annoying little browser problems that really ought to have been solved by now but mysteriously aren't. This is the most common cause of missed deadlines, imperfect compatibility and a general drop in job satisfaction. These pages are designed to help you, a little bit.

This site treats JavaScript browsers in detail, but doesn't pay any attention to noscript browsers. This has two reasons:

  1. The site started out as a JavaScript repository and I wasn't (and am not) interested in browsers that cannot support my nifty tricks.
  2. There are far too many noscript browsers, and they have far too little market share, to keep track of them all.

Browserology is anything but an exact science. Although the rise of web standards has done much to alleviate the plight of web developers, browsers may still have sharply different opinions on one bit of CSS or JavaScript. Sometimes their creators want them to be different from all other browsers, sometimes the differences are caused by a programming error or oversight.

In general the deliberate differences are more easily understood explained than the accidental ones. Therefore about 50% of this site deals with deliberate browser differences. Fortunately these differences are quite easily explained. "If the browser supports this system, do this. If it supports that system, do that". Annoying, certainly, but not unsolvable.

25% of this site treats accidental differences I happened to find out about. In general the descriptions are much vaguer and sometimes I don't understand what's going on, either. They are described strictly on a case to case basis.

The remaining 25% of this site treats things that work the same in all browsers.

Current browsers

On I concentrate on the current browsers. There are simply too many browsers to cover them all, and the five modern ones account for 98% of the hits on all sites.

On many old pages you'll still find compatibility notes for obscure browsers. I leave them intact, since a reader might need this information. Nonetheless I'm going to simplify the compatibility notes from now on. I'm not very interested any more in my scripts' performance in, say, Explorer 3 or Hotjava. Even Explorer 4 is all but gone, so I don't have to pay attention to it any more. Therefore newer scripts will only be tested in the current browsers, unless there is some especially noteworthy feature or bug in an older one.

Even the modern browsers have far too many versions. Mozilla, especially, is a pain in this respect. I study only one Mozilla, Opera and Safari release at a time. Please remember that when I upgrade the officially supported browsers on this site I'll have to review and update every single compatibility table on this site. Usually that takes me about two weeks, so I'm not that eager to upgrade every single time a browser vendor releases a new version.

I currently support the following browsers:

How to deal with browser incompatibilities

The only way to understand all browser incompatibilities is to read and memorize this entire site and all other sites like it. Of course that's impossible, even I myself forget things I documented on my own site.

Then how should you teach yourself to deal with browsers? First of all, don't try to understand everything at once. Just start with a practical problem, solve it and remember the general outlines of your solution. Or read my History of browsers for an overview of web developers' complex relationship to browsers.

You solve browser differences by searching and asking for information. Search the WWW, there's plenty of information out there. If you can't find anything, ask away on a forum or mailing list. For the latter I especially recommend Evolt.

If you think you discovered something interesting, document it. Clearly describe the problems and note which browser does what. Not only does it save you time when you next encounter the problem, writing everything down forces you to think logically and to really understand what's going on.
This site started as a documentation of browser differences, originally meant for myself and my colleagues. Documenting browser bugs pays!

Once you've gained self-confidence by succefully solving some problems, choose one of the deliberate browser differences and try to learn the basics by heart. This gives you some useful knowledge and teaches you how browser makers think.

Also, start answering questions of other people. Finding the answers will expand your own understanding, as well as making another web developer happy.

The most important and most difficult to acquire is a clear sense of when you should stop considering browser differences. If in a certain CSS layout there's a 10px difference between two browsers, and it turns out to be hard to solve, ask yourself whether it's worth it.

Web sites will never display perfectly under all circumstances. The sooner you accept this as an integral part of your daily work, the better. As soon as you start creating fail-safe web sites that may not display perfectly but can be read and navigated under all circumstances, your life becomes much easier.