Ok I'm going to have to dispell the idea that HTML5 isn't ready and it is slow and other such nonsense.
First of all, I will admit that quality does vary wildly, depending on choice of browser. I'm not suggesting that you give the user the choice of browser, but you a) write extensions using JavaScript b) provide a lightweight container so that it runs fast as a native application in the target environment.
In fact, I would write an object-based rendering engine, capable of rendering textured surfaces, SVG and 3D scenes (I have been working on this anyway), and use JavaScript in V8 to drive it.
I am saying, kill runtime bytecode interpretation. Downcompile to JavaScript, run it on the fastest JS implementation there is (which compiles to assembly code on the fly) and use it to drive a graphics engine implementation, which could be WebGL based or based on DirectX or OpenGL, but ideally what is a single executable and not something which requires a browser to run.
To make games work with JavaScript you need to control the environment in which the user runs it, period.
HTML5 is suitable for mobile scenarios. It's awful in the default browsers, but you wrap your game in a native, hardware accelerated container (See Please login to see this link.).
I only suggest JavaScript because it's ubiquitous, it has momentum and it's only going to improve. It's embeddable and demonstrably capable of driving a modern game, just as Lua or Python (Anaconda is still the most efficient runtime for MMF2), and other scripting languages can. The expense is in the graphics rendering, so providing you have a native hardware accelerated context in which to render things, it works.
I also argue HTML5 is the simplest way to build user interfaces today, and as a product that aims to be intuitive , you need to give your developers the best chance of building exactly what they want, looking exactly how they designed it, as fast as possible.