InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Running HTML 5 Inside IE with Google Chrome Frame

Posted by Abel Avram on Sep 23, 2009

Sections
Development
Topics
.NET ,
Rich Client / Desktop ,
Rich Internet Apps ,
Architecture
Tags
Google Chrome Frame ,
HTML 5 ,
Internet Explorer ,
Google

Google has just released an Internet Explorer plug-in called Google Chrome Frame that enables Chrome rendering inside IE. That means that any page targeted for Chrome Frame will be rendered using Google’s rendering engine, including HTML 5 elements supported by Google, while the page is viewed with Microsoft’s Internet Explorer.

Google Chrome Frame is an open source project that prepares the way for Wave. Wave is going to use HTML 5 features, but Wave is not going to be largely adopted if Internet Explorer is not supporting HTML 5. The workaround for Google was to create a plug-in for Internet Explorer that completely bypasses IE’s rendering engine. Not only pages load faster in IE that way, but all HTML 5 elements that Google supports work fine in IE.

Lars Rasmussen, Google Wave team manager, explains why Chrome Frame was created:

Google Wave depends on strong JS and DOM rendering performance to provide a desktop-like experience in the browser. HTML5's offline storage and web workers will enable us to add great features without having to compromise on performance. Unfortunately, Internet Explorer, still used by the majority of the Web's users, has not kept up with such fairly recent developments in Web technology. Compared with other browsers, the JavaScript performance is many times slower and HTML5 support is still far behind. Likewise, the many different versions of IE still in use -- each with its own set of CSS quirks and layout limitations -- further complicates building rich Web applications.

In the past, the Google Wave team has spent countless hours solely on improving the experience of running Google Wave in Internet Explorer. We could continue in this fashion, but using Google Chrome Frame instead lets us invest all that engineering time in more features for all our users, without leaving Internet Explorer users behind.

To jump start testing this, the IE plug-in needs to be installed first. Then any page can be loaded in IE, being rendered by Chrome’s engine if the URL is prefixed by “cf:”. For example, this page contains HTML 5 video: cf:http://camendesign.com/code/video_for_everybody/test.html.

Using the “cf:” prefix is a quick method that proves the capability, but the actual method to be used is to specify a meta tag in the HTML page:

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

When IE, having the Chrome Frame plug-in, encounters this tag, it starts using Chrome’s engine. Google has prepared a script to test if Chrome Frame is installed and to install it:

<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"> </script>
 
<div id="placeholder"></div>

<script>
CFInstall.check({
    node: "placeholder",
    destination: "http://www.waikiki.com"
  });
</script>

A registry key can be used to force IE to always use Chrome Frame:

HKCU
  Software
    Google
      ChromeFrame
        OptInUrls
          *google.com*         [string value name is the pattern to match, assigned value is not used]
          *yahoo.com/mail*     [use simple pattern, no regexp matching]
          *                    ['*' means load everything!]

Chrome’s debug tools and logging are also available in Chrome Frame. Chrome Frame is available only for IE 6, 7 and 8 on Windows XP and Vista. Other browsers/versions are not targeted/affected. The plug-in is a pre-release, not even in beta, being targeted at developers.

This is not the intended way to run HTML 5 applications across all major browsers. The user still needs a plug-in to run them in IE. But Google is clearly forcing Microsoft’s hand to speed up HTML 5 adoption and improve IE. Those currently using IE will the speed improvement and will benefit from HTML 5 applications that are to come like Wave.

Al right by Mihai Lazar Posted
Sadly Google turned this project into a anti-MS corporate PR opportunity by Tim Acheson Posted
  1. Back to top

    Al right

    by Mihai Lazar

    Very cool idea !! Firefox should have done something similar long ago..

    Selling Chrome as a free IE plugin =)) I'm still laughing.
    I applaud Google for this idea, it's pure genius.

  2. Back to top

    Sadly Google turned this project into a anti-MS corporate PR opportunity

    by Tim Acheson

    Yep, it’s funny really.

    Google uses HTML 5 as a political football, wielding it to bash MS and IE.

    W3C aren’t very impressed by this, because HTML 5 is not yet a specification. It’s still draft:

    www.w3.org/QA/2009/05/_watching_the_google_io.html

    W3C even displays a warning on the draft in bold text saying if do implement it you should be prepared for problems later.

    When the Wave dev team announced this on their blog, they instead of writing a useful post about an interesting development, instead Google used it as a soap-box for a viral anti-MS propaganda campaign, and the post was dominated by rhetoric which of course has been regurgitated widely online:-

    "Unfortunately, Internet Explorer, still used by the majority of the Web's users, has not kept up with such fairly recent developments in Web technology. Compared with other browsers, the JavaScript performance is many times slower and HTML5 support is still far behind. Likewise, the many different versions of IE still in use -- each with its own set of CSS quirks and layout limitations -- further complicates building rich Web applications."

    http :// googlewavedev . blogspot . com/2009/09/google-wave-in-internet-explorer.html

    [To use the above URL please remove the spaces]

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.