Как заставить Raphael JS выводить как svg - PullRequest
3 голосов
/ 27 августа 2011

В настоящее время я пытаюсь сгенерировать pdf из html-страницы с диаграммами, сгенерированными Raphael.

Он отлично работает на любом браузере, кроме Internet Explorer <9, для которого Raphael использует vml. </p>

Я использую wkhtmltopdf для конвертации страницы, он использует webkit для рендеринга страницы, поэтому он не поддерживает vml при использовании IE.

Есть ли способ заставить Рафаэля выводить svg вместо vml в IE?Я знаю, что он не будет отображаться, но я бы сделал это один раз в vml и второй раз в svg.

Я видел, что могу установить свойство

Raphael.type = "SVG";
Raphael.svg = true; 

но он не работает после создания объекта.

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

Я тоже один из тех, кто хочет, чтобы Internet Explorer генерировал SVG.Это не должно быть отображено, просто отправлено на сервер.Итак, я посмотрел на это:

Вы можете заставить Рафаэля думать, что он должен генерировать SVG, делая так:

    var rProto, paper;

    rProto = Raphael.prototype.raphael;
    rProto.svg = true;
    rProto.vml = false;
    rProto.type = 'SVG';

    var paper = Raphael(...);

Однако Рафаэль теперь выдаст тонны ошибок, потому что Internet Explorer будет следоватьпуть современных браузеров, который, очевидно, не будет работать.Я посмотрел на эти ошибки, и они не кажутся тривиальными, чтобы их исправить или обойти.

0 голосов
/ 30 августа 2011

В соответствии с этим потоком (хотя и немного устаревшим) нет способа заставить IE принимать элементы SVG:

http://groups.google.com/group/raphaeljs/browse_thread/thread/5a05193c0334bda7/25776b86e78d3c2f?lnk=gst&q=force+svg#25776b86e78d3c2f

Однако, я не понимаю, что вы имеете в виду под ", он использует webkit, поэтому он не поддерживает VML, когда IE используется ". Насколько я знаю, WebKit - это другой рендерер, и он никак не связан с IE. Возможно, если вы решите проблему немного дальше, мы поможем найти решение.

0 голосов
/ 27 августа 2011

Справочник по многим командам R.vml, попробуйте также установить,

Raphael.vml = false;
...