2013-04-30 3 views
0

Я пытаюсь использовать canvg для растеризации изображения SVG, встроенного в мой документ. Следующий код производит правильный вывод в Firefox 17:Как я могу подготовить SVG для canvg() в IE 8?

//svg is a jQuery object that we selected earlier 
//canvas is a canvas created earlier 
//use a temporary DOM object to serialize the SVG DOM object into text; 
var tmpContainer = $(document.createElement('div')); 
tmpContainer.append(svg.clone()); 
var svgText = tmpContainer.get(0).innerHTML; 
canvg(canvas.get(0), svgText); 

Однако в IE 8 (другой браузер моя организация поддерживает), svgText никогда не поднимает значение. Я пробовал другие варианты, например, метод html() из jQuery с небольшим успехом - в конце концов, это не совсем html.

Мой вопрос: Как я могу получить SVG как строку текста в IE8? Есть ли другие способы передать это canvg(), о которых я просто не думаю?

ответ

0

Хорошо, поэтому у меня плохие новости. Готов? Здесь:

SVG не существует в Internet Explorer 8.

Как только я на самом деле посмотрел на источник страницы с помощью отладчика, я узнал, что Google Chart (и любая другая библиотека диаграмм Javascript, если на то пошло) использует VML вместо SVG для диаграмм. Это означает, что я не могу использовать canvg() или что-нибудь еще, поскольку все стоит.

Мои варианты заключаются в следующем:

  • Использование node.js для создания SVG диаграмм на стороне сервера.David Padbury идет о том, как это сделать с помощью Highcharts. Там будет много расширения, которое потребуется, но основная идея остается прежней. Это скорее всего работает, но я ничего не знаю о node.js. Кроме того, мне нужно будет спроектировать интерфейс между моим сервером и клиентом разумно, чтобы у меня не было двух сценариев для поддержки.

  • Попробуйте использовать утилиту для преобразования VML. Это не выглядит многообещающим. Но это то, с чем должен работать мой JavaScript, поэтому, если бы я хотел сохранить его на стороне клиента, это самый прямой подход.

  • Попробуйте добавить поддержку SVG в IE 8. Существуют библиотеки javascript, такие как svgweb, и плагины вроде Adobe's, которые пытаются добавить поддержку SVG в браузер. Но есть некоторые проблемы.
    • Поскольку веб-сайт в основном забыл об IE 8, эти опции застоялись в поддержке. Последняя фиксация для svgweb была в феврале 2011 года, и Adobe прекратила поддержку своего плагина в конце 2008 года.
    • Я также не знаю, делает ли Google Charts функциональное тестирование для поддержки SVG, поэтому он может просто по-прежнему использовать VML для создания диаграмм.