Programming - - By Craig Buckler

Google Chrome Frame: the Technical Details

Google Chrome FrameGoogle Chrome Frame is the first realistic solution that addresses the problem of Internet Explorer 6.0. It allows businesses users to retain IE for legacy systems but provide enhanced features in new applications (more about that later).

I’ve been testing Chrome Frame for the past few days and I’m impressed.

Chrome Frame Installation

Installing Chrome Frame is as easy as installing Flash, the PDF viewer, or any other IE plugin. The full 10MB application is downloaded and installed within a few minutes. The process is quick, painless, and does not require a browser restart.

Chrome Frame is available for IE6, IE7 and IE8. I’m not convinced many IE8 users will need it; speed and rendering problems are rarer in that browser. However, the plugin will allow developers to use HTML5, CSS3, canvas and SVG features that would have been technically impossible before.

Under the Hood

Chrome Frame installs as a Browser Helper Object; a Windows DLL that extends IE functionality. BHOs are a standard method used to add toolbars and other plugins so Google is using Microsoft’s own documented platform. If Microsoft wanted to kill Chrome Frame, it would be technically difficult to achieve without affecting other plugins.

BHOs are also exploited by malware and virus developers. Microsoft fixed this issue in XP SP2 by sandboxing BHO code and introducing the Add-on Manager which allows users to disable unscrupulous code. Chrome Frame therefore requires IE6 on XP SP2 as a minimum.

IE Integration

Chrome Frame shares many of IE’s browser features, such as bookmarks, history, cookies and passwords. This is essential for end users; it will retain their login credentials no matter which rendering engine is used.

Unfortunately, other plugins could cause confusion. Although Flash may be installed in IE, you will also need to install the plugin within Chrome. This may not be a huge problem; Flash-heavy web sites are unlikely to benefit significantly by switching to Chrome. However, I would suggest Google investigate the detection and automatic installation of popular plugins.

Speed and Stability

Confusingly, ComputerWorld are reporting that IE8 runs 10 times faster with Chrome Frame. What they really mean is the Chrome Webkit engine is 10 times faster than IE’s Trident engine when compared in the SunSpider JavaScript benchmark suite. SunSpider is not a real-world test of page rendering speed and nor does Chrome Frame effect IE’s default speed.

However, Chrome-rendered pages are noticeably faster and it allows you to run IE-incompatible code such as the excellent JSNES JavaScript NES emulator.

Chrome Frame is still in beta and there are issues. For example, I experienced rendering problems in GMail, although it’s fine in both IE6 and the Chrome browser.

Chrome Frame for Developers

IE will switch to Chrome Frame rendering if the following meta tag is added to the HTML head:

<meta http-equiv="X-UA-Compatible" content="chrome=1">

In addition, pages can be tested in Chrome Frame by adding “cf:” to the start of a fully-qualified URL, e.g.

cf:http://www.sitepoint.com/

The Webkit Developer Tools are included so it’s possible to right-click a Chrome-rendered page and select “Inspect Element”. It would be great if the same tool could be used in IE’s view, but perhaps that’s asking a little too much!

Accessibility, Progressive Enhancement and Chrome Sniffing

I’m about to make a statement that will upset some developers. Please sit down. Ready? Sure? Here goes…

Chrome Frame does not allow you to drop IE6 support!

Many users will continue to use IE6 without Chrome Frame. Many companies will block the plugin. Users with IE-specific assistive technologies may not be able to use Chrome Frame.

So what’s the point?

Chrome Frame allows you to implement progressive enhancement techniques that support older browsers but improve the user experience in modern browsers. For example, your application might produce a table of figures. That table remains viewable in IE6 but Chrome Frame users would also see a colorful canvas-generated chart.

Chrome Frame adds “chromeframe” to the IE User Agent string when it’s installed e.g.

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe)

You can therefore use server-side code to detect Chrome’s presence, add the HTML meta tag, include enhancements, or display a link to the plugin download page. Google also provide JavaScript Chrome Frame detection code.

Will Users Adopt Chrome Frame?

Chrome Frame is still undergoing development and there are technical issues to iron out so I could not recommend it at this stage. However, the future is promising. Corporations and private users may be unable or unwilling to upgrade their browsers, but installing an unobtrusive plugin is significantly easier.

Related reading: