<div id="content"> <div id="demo-space-wrapper"> <canvas height="100" id="demo-space" width="100"> This text is displayed if the client browser does not support HTML5 Canvas. </canvas> </div> </div>
The problem with this approach is that if your layout expects to have an object there and your client's use of Internet Explorer doesn't include the Canvas extension then this could damage the overall feel of your layout.
And that is where Modernizr comes in to play. It is a trivial to use JavaScript library that makes it possible to detect if a browser can use Canvas or any other HTML control. So what I did was take the Modernizr Canvas detection documentation and apply it to my JavaScript. With that in hand I wrote this:
// check for canvas if (Modernizr.canvas) { // We have canvas so add a rectangle var demospace = document.getElementById('demo-space'); var context = demospace.getContext('2d'); context.fillStyle = "rgb(255,0,0)"; context.fillRect(10, 10, 10, 10) } else { // No canvas. Remove the layout space to preserve the layout. var ul = document.getElementById('content'); var li = document.getElementById('demo-space-wrapper'); ul.removeChild(li); };