Lamentablemente, no tengo una respuesta, pero tengo tres consejos para proyectos que podría mirar.
La primera es la Lively Kernel de Dan Ingalls (sí, Dan Ingalls) en Sun Labs. Es una implementación de Smalltalk Virtual World en JavaScript sobre SVG. Más precisamente, es una implementación del marco de GUI Morphic de Squeak Smalltalk en JavaScript usando SVG y un puerto de (partes de) Squeak Smalltalk en JavaScript.
O, si no es un Smalltalker y lo anterior no tiene sentido para usted: es un sistema operativo, escrito en JavaScript con el intérprete de JavaScript como la CPU, SVG como la tarjeta gráfica y el navegador como el computadora.
Esto es lo más extremo posible, cuando se trata de JavaScript y SVG. Y solo totalmente funciona en Safari 3 y en parte en Firefox 3, aunque también hay un puerto experimental para Internet Explorer.
El segundo proyecto es el puerto Processing.js de John Resig del lenguaje de visualización de procesamiento a JavaScript. Utiliza el elemento <canvas>
en lugar de SVG precisamente debido a los problemas que mencionaste. Éste, sin embargo, solo funciona en Firefox 3.
El tercero es Real-Time 3D in JavaScript por Useless Pickles. Utiliza solo JavaScript, DOM y CSS y no SVG o <canvas>
o Flash o lo que sea. Y es portátil para casi cualquier navegador, incluido Internet Explorer 7 en adelante. Hacer 2D debería ser aún más fácil que esto.
Entre esos tres proyectos, debería poder encontrar algo de inspiración y también encontrar algunas personas que trataron de empujar el sobre con JavaScript y SVG o JavaScript y Gráficos, y pueden decirle qué funciona y qué no.
Conclusión: hacer multi-navegador SVG o multi-navegador <canvas>
es casi imposible, pero con un poco de locura, gráficos entre navegadores sin SVG o <canvas>
es posible.
http://code.google.com/p/explorercanvas/ es una solución que permite lienzo en el IE. Lo he usado con las etiquetas condicionales de MS IE funciona con encanto. –
Escribí esa respuesta hace casi un año y desde entonces no he seguido la evolución. ¡Siéntete libre de editar! –