Microsoft is throwing itself a little party to celebrate the demise of Internet Explorer 6. Based on the latest data from Net Applications, the much-maligned browser recently fell below 1 percent in the United States, which prompted the IE Team to celebrate with a cake on IE 6′s grave, as it were.
Roger Capriotti, director of Internet Explorer marketing, writes, “IE 6 has been the punch line of browser jokes for a while, and we’ve been as eager as anyone to see it go away.”
The U.S. joins Austria, Poland, Sweden, Denmark, Finland and Norway in the less-than-1-percent category and several more nations are not far behind. Microsoft also recently announced that it would begin forcing IE updates for those that have opted into automatic Windows Updates, which should help further reduce the number of both IE 6 and IE 7 users.
Unfortunately for web developers the worldwide browser market share picture is not quite as bright. Internet Explorer 6 still has a considerable user base in China, where it tops 25 percent, and much of the rest of Asia hovers in the 5 percent range.
The other bad news is that despite the demise of IE 6, compensating for the shortcomings in both IE 7 and IE 8 remain necessary parts of a web developer’s job. And, given that Windows XP users will never be able to upgrade beyond IE 8, IE 8 will likely take IE 6′s place as the official pain in the ass of web developers everywhere.
Microsoft has released the fourth preview of Internet Explorer 10. As is the case with previous Platform Previews, the release is aimed at developers: the new features are important to those creating rich, complex web applications, but will have less impact on web users.
However, even web developers might struggle to get too excited about the latest preview, because they probably won’t be able to run it: it only works on the Windows 8 preview release that Microsoft shipped at its BUILD conference in September.
Safely share data between domains with IE10's CORS
CORS allows one application to expose its data to another application even when the same-origin policy would otherwise deny such access. This is useful for creating “mashup” applications that combine web services from multiple different providers.
Microsoft has positioned its Platform Previews as a way to let developers test and provide feedback on new features so that they can inform Microsoft of bugs, and guide the development of new specifications. The first two Platform Previews for Internet Explorer 10 were made available to users of Windows 7. This preview, however, is not. If you want to use it, you’ll have to use the Windows 8 Developer Preview.
The third preview was in the same position; Microsoft did not release a Windows 7 version of Platform Preview 3. Instead, the version of Internet Explorer that shipped with the Windows 8 Developer Preview was the third preview. Though Internet Explorer 10 will support Windows 7 when released, web developers wanting to test the software now will have to use an unsupported, not-even-beta operating system to do so. And while they can do so using a virtual machine, doing so will disable most or all of the hardware acceleration features found in the browser, making it a second-rate experience.
But as important as Metro-style applications are to Microsoft, the browser will still have a substantial user base on Windows 7, and the web developers of today are far more likely to be using Windows 7 than they are Windows 8. Regular non-Metro web applications still matter. Effectively excluding this group from the preview—the group most likely to have valuable feedback and insight—makes one wonder what the entire purpose of the scheme is.
This article originally appeared on Ars Technica, Wired’s sister site for in-depth technology news.
Internet Explorer. That’s all you really need to say to raise a web designer’s blood pressure. And yes, we know IE is improving, but there are still plenty of users stuck on IE 8 and IE 7 (even IE 6) and you can’t just leave those browsers out in the cold.
The first method that came along to deal with IE’s rendering quirks were various CSS hacks — slip an underscore in here, add an asterisk there and you can target specific versions of IE in your stylesheets.
CSS hacks work well enough, but they’re a pain to maintain. Using conditional comments to load IE-only stylesheets is another option, but now you have extra HTTP requests and two stylesheets to maintain. You could also use conditional comments to add CSS classes to the <html> or <body> tags of your pages, but that increases the size of your pages in every browser.
The truth is there’s no perfect way to handle IE. Each method has its advantages and disadvantages and the right answer will vary from project to project.
We can’t tell you how to handle IE, but we can tell you that developer Mathias Bynens has put together a very well written and thorough rundown of all the different ways you can handle Internet Explorer’s rendering quirks — conditional stylesheets, conditional classnames and good old CSS hacks. Bynens also has a fourth option: combining conditional classnames with “safe” CSS hacks.
Bynens defines “safe” CSS hacks as hacks that “work in specific versions of a given web browser” and are “unlikely to be parsed by all other browsers, including future versions.”
Regardless of how you choose to deal with Internet Explorer, the reality is you will have to deal with it. Bynens’ post makes a great primer on the various options available and is well worth adding to your bookmarks.
Google has some good news for those of you stuck using Internet Explorer 6, 7 or 8. The company’s Chrome Frame technology, which injects the Google Chrome rendering engine into Internet Explorer, can now be installed without needing admin privileges in Windows.
For now the new features are only in the experimental dev channel, but once this build has been stabilized the new features will roll out to the beta and final release channels.
While it’s true that simply switching web browsers is a far better solution than using Chrome Frame, for those who can’t switch browsers because they’re stuck in corporate IT environments where old versions of IE still reign supreme, Chrome Frame remains the only real solution. Of course such environments are also precisely the sort of places where users can’t install their own software, which is why Google has eliminated the need for admin rights to install Chrome Frame.
Triggering Chrome Frame is left up to individual sites, which must add a meta tag to their pages to check for Chrome Frame.
For more info on what’s new in the latest release of Chrome Frame, check out this video from Google’s ongoing I/O conference in San Francisco:
With the two most-popular web browsers ready to drop new versions within the next couple of months, you’re going to have to adjust a few twiddly bits on your website if you’re sniffing user agent strings. Of course, you should be sniffing for capabilities and not blocking browsers, but nonetheless, it’s helpful to see what the new strings look like.
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Likewise, the new version of Firefox — version 4 is due October-ish — will have an updated UA string. Unlike IE, Firefox runs on several platforms, so there are a few:
Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/yyyymmdd Firefox/4.0.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/yyyymmdd Firefox/4.0.1 Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/yyyymmdd Firefox/4.0.1
Easy enough to decipher. The “year month date” part is where the Gecko build id will show up. This build id will be different for each platform. Mozilla developer Daniel Witte covers the changes in depth on his blog. There’s also a more complete reference on the Moz Dev Center wiki.
Both Mozilla and Microsoft have new mobile browsers in development. Firefox Mobile was once known by the codename Fennec, so the mobile UA string is the same as desktop Firefox, but it has Fennec/fennecversion appended at the end.
The new IE mobile UA string is:
Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; <DeviceManufacturer>;<DeviceModel>)