Modern Software Experience

2009-10-01

Chrome Frame

web site

A website may recommend or require that Internet Explorer users install the Chrome Frame plug-in, but cannot force a visitor to do so. The decision to install Chrome Frame is up to the user.

Once Chrome Frame is installed, Chrome Frame will take over and render a web page whenever the website indicates that it should.

The ability to switch between Chrome Frame and IE rendering would provide a dramatic demo of the quality difference.

I consider it a major mistake of the early Chrome Frame release that it does not allow the user to override that and force Internet Explorer instead. The ability to switch between Chrome Frame and IE rendering would provide a dramatic demo of the quality difference.

The ability is necessary for cases such as when a web developer added the Chrome meta-tag to a IE page that requires ActiveX. Most of all though, it is just nice to leave users in control.

recognising Chrome Frame

The early release of Chrome Frame does not indicate when it is active. I consider this a user interface defect. I think Chrome Frame should show a Chrome icon on the status bar to indicate that it is active, but Chrome Frame Team does not do so yet.

There are two ways to recognise Chrome Frame anyway. The first indicator is the page rendering; web pages look better because Chrome Frame supports modern web features that Internet Explorer does not. Chrome Frame even renders pages that Internet Explorer does not.

Of course, many web developers dumb down their site by deliberately foregoing features that Internet Explorer does not support and additionally do everything to make it look as good in Internet Explorer as it looks in a web browser. With such IE sites, the difference in page rendering may be hard to spot.

The one way the early Chrome Frame offers to make sure is the context menu. Open the context menu anywhere on the page to see several Chrome Frame-specific menu items, including an About Chrome Frame... option at the bottom of the context menu.

forcing sites

the cf: prefix

Most sites look better in Chrome Frame, but Chrome does not take over until the site’s developers have added the Chrome meta-tag to its pages.

Users can force rendering in Chrome frame by prefixing the site URL with cf:. The resulting Chrome-specific URLs can be bookmarked, but every time you share it, you have to remember to do so with the cf: prefix, as these URL do not work in any web browser, not even Google Chrome.

Another problem is that as soon as you right-click and follow a link, even a link to another page on the very same site, Chrome Frame will yield and let Internet Explorer render the page again, which is probably not what you want, especially not if it is an XHTML site.

The cf: prefix is certainly less than perfect, but Google is not providing the cf: prefix as a user-level feature, they are offering it as a way for developers to test pages without adding the Chrome meta-tag.

the registry

Chrome Frame does not let the user specify a list of sites or pages for which it should take over. To be more precise, it does not offer a user-interface for setting such a list of sites and pages. An underexposed feature of Chrome Frame is that it actually does support such a list.

Chrome Frame checks a registry key for values. Any page you add to the list of values will be rendered using Chrome Frame. Chrome Frame supports simple pattern matching. This allows specifying an entire site without having to specify each page individually.

Google Chrome Opt-In Example

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Google\ChromeFrame\OptInUrls]
"http://www.tamurajones.net*"=""
"http://www.googlewave.com*"=""
"http://www.google.com*"=""
"http://www.google.nl*"=""

URL tip

The example in Google’s Chrome Frame Developer’s Guide uses *google.com* and *googlewave.com*; it has a wildcard in front and behind the domain name. I believe doing so to be highly unadvisable, as it will apply to any URL that contains those particular string, including files on other domains, and that is probably not what you want. That is why the example above deliberately included both the www. subdomain part and the http:// protocol prefix for all sites.

always use Chrome Frame

You can even specify that Chrome Frame should take over all pages; if you including nothing but a single wildcard, it will match all URLs. That looks like this:

Google Chrome OptIn All Sites

Windows Registry Editor Version 5.00
 [HKEY_CURRENT_USER\Software\Google\ChromeFrame\OptInUrls]
"*"=""

With this setting, Chrome Frame will take over the rendering of every page. That may seem nice, but this setting is not recommended. Keep in mind that there are pages, particularly on intranets, that still depend on Internet Explorer quirks or ActiveX, most infamously Microsoft’s Windows Update site. You should selective add sites that you want to be rendered by Chrome Frame instead of Internet Explorer.

updates

2009-09-04 Chrome Fix

Andrea Giammarchi has created ChromeFix, a utility that makes it easy to let Chrome Frame take over all pages and turn that off again. It works by adding and removing the * value from the OptInUrls key.

links

Chrome Frame