Vladimir Vuki?evi? normally hacks on Mozilla products, but spent a little time on an experiment with IE. An experiment that looks very exciting indeed.

I love canvas, and wish that it was ubiquitous. We have great wrappers out there such as dojo.gfx, but wouldn’t it be nice if canvas worked everywhere? (and the full API to boot).

Well, Vladimir has an experiment to get it to IE. The approach is very interesting indeed. It isn’t like excanvas which uses VML… and there is a Silverlight bridge being worked on that looks promising. Instead, we have this:

I’ve been working on a native Canvas implementation for IE based on the same rendering core that’s in Firefox.

The same implementation, shoe horned into IE:

With an object tag, a bit of CSS, and (to work around another IE bug) a single line of script, <canvas> elements in HTML just work. I’m excited that this experiment is working out, because lack of Canvas support in IE is one of the reasons people skip Canvas and instead turn to Flash and other plugin technologies.
</canvas>

It is really depressing to me that all it took was a third-party developer with a bit of passion, and the canvas tag is now available. If the Microsoft developers all use Firefox, why wasn’t this created long ago “in house”? Not to detract from Vladimir’s work because it’s nothing short of miraculous, but it’s something he should *never* have needed to write on his own.

I would love canvas support everywhere. With excanvas, you can get really close, and I feel that it’s the best approach right now since it doesn’t require any active-x objects popping up nasty security messages to your web audience.

I really commend Vladimir on working to bring full support of Canvas to IE. Sadly, and even the author himself admits this, the user experience for someone using IE to take advantage of his hard work is far less than ideal: “Currently, the experience is pretty crappy: you have to click through an infobar to allow installation of this component, then you have to click “Yes” to say that you really want to run the native content, and then you have to click “Yes” again to allow the component to interact with content on the page. This sucks. In theory, with the right signatures, the right security class implementations, some eye of newt, and a pinch of garlic, it’s possible to get things down to a one-time install which would make the component available everywhere.”

One of the biggest reasons to have canvas built in is so anyone using browser XYZ can just go to the website and it will “just work”. Right now that can be done with excanvas, but anything based on custom IE will always have a more annoying user experience. :(