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