Мне нужно отобразить некоторые интерактивные (прикрепление с помощью DOM-слушателей и т.д. и обработку событий) векторную графику на веб-сайте, над которым я работаю. Существует рекомендация W3C для SVG, хотя этот формат по-прежнему не распознается службой поддержки Internet Explorer, которая является обязательной (для общедоступного веб-сайта). IE обрабатывает VML, хотя и есть даже библиотеки javascript, которые делают какой-то рисунок в виде холста в зависимости от браузера (SVG vs. VML) - excanvas, GFX Dojo Инструментарий и многое другое. Это было бы неплохо и приемлемо, хотя ни один из них не мог отображать изображение SVG из данной разметки.
Итак, вопрос состоит из нескольких частей:
- Существуют ли библиотеки Javascript с несколькими браузерами, которые отображают векторную графику из данной разметки (не обязательно SVG) и предлагают доступность для присоединения к событиям DOM?
- Если нет, то какая из самых популярных технологий, встроенных в браузер, была бы наиболее подходящей для выполнения такой задачи? Я могу выбрать из Flex/Flash, Java-апплета. Silverlight не является вариантом из-за блокировки Windows.
[ EDIT] Спасибо всем за ваши комментарии/предложения. Ниже приведены некоторые мои случайные замечания/выводы по этому вопросу:
- Уровень интерактивности, который мне нужен, - это способность обнаруживать события DOM на отображаемом векторном изображении - мышь, мыши, клик и т.д. - и способность реагировать на них, как изменение цвета фона, отображение диалогового окна и т.д.
- Идея придерживаться формата SVG неплоха, поскольку она является родной для многих браузеров, кроме самой популярной - IE. После некоторых экспериментов с отображением динамического SVG я понял, что IE версия 7 наиболее проблематична. Там слишком много хлопот из-за несовместимости браузера.
- Торт кажется отличной картой Javascript, хотя я не мог получить примеры, работающие над IE7.
- Java-апплеты. Мне понравилась эта идея, поскольку я мог использовать библиотеку Apache Batik, качественный визуализатор SVG. Тем не менее, Batik - очень большая библиотека, и я не могу позволить себе развертывать апплет, который весит несколько мегабайт.
- Я решил придерживаться опции Flex. Я нашел красивую векторную графическую библиотеку Degrafa. Он использует собственный формат разметки, но распознает нотацию SVG-пути, поэтому в моем случае будет довольно легко преобразовать SVG файлы с помощью XSLT или просто их разбор.
[ EDIT 2] Появились еще несколько комментариев. Я хотел бы уточнить, что под "Windows lock-in" я имею в виду ситуацию, когда Silverlight обычно запускается в Windows, точнее, IE. Я сомневаюсь, что это приемлемое решение (например, Flash или Java-апплет, например) в других системах. Да, я не сомневаюсь, что можно запустить приложение Silverlight в любой системе, хотя я боюсь, что это будет слишком много для среднего пользователя.
@Akira: У вас были проблемы с этими "SVG-рендерингами" на IE7? Я все время бросаю ошибки Javascript.