Far too many browsers exist for me to provide a decent overview of feature support on each. Instead, in this appendix, I’ll stick to the key modern desktop browsers—Chrome, Firefox, Internet Explorer 10, and Safari—and their mobile equivalents, as I’ve done throughout this book.
As this book was going to press, Opera announced that it would be phasing out its own Presto rendering engine and that future versions of the browser would instead use Chromium, the branch of WebKit that Chrome is also based on. But that doesn’t mean Presto will be going away in the short term—it’s already embedded on many devices that don’t tend to update, such as TVs and games consoles. In the long term, feature support should be considered the same as Chrome, but I’ve kept it distinct here for legacy support.
When discussing mobile browsers, I usually mean both smartphone and tablet and, more often than not, that means Safari mobile and the Android browser (although both are based on WebKit, there’s quite a deal of variety between them). Firefox, Internet Explorer, and Opera use the same rendering engine across different platforms (although see the previous paragraph about Opera), so I’ll only mention the mobile version of those browsers where any differences exist (which is not often).
When I refer to Android, I mean the stock browser that comes with most versions of the Android OS up to 4.2 (the most recent as I write this). Newer releases will likely include the new mobile version of Chrome, which, like Firefox and Opera, can be considered more or less equivalent to its desktop sibling.
As I’ve mentioned before, there really is no substitute for testing on actual devices. If possible, you should create a device library or join one in your area; if that’s completely out of the question, ask other developers for their experiences.