Как заставить Raphael JS выводить как svg

В настоящее время я пытаюсь создать PDF-файл из HTML-страницы с диаграммами, созданными raphael.

Он отлично работает во всех браузерах, кроме Internet Explorer ‹9, для которого raphael использует vml.

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

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

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

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

но это не работает после того, как объект был создан.


person Moop    schedule 26.08.2011    source источник


Ответы (3)


Я тоже один из тех людей, которые хотят, чтобы 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 будет следовать кодовому пути современных браузеров, что, очевидно, не будет работать. Я посмотрел на эти ошибки, и мне кажется, что их нетривиально исправить или обойти.

person Blaise    schedule 03.02.2012

Многие команды ссылаются на R.vml попробуйте установить и это,

Raphael.vml = false;
person Andrew    schedule 26.08.2011
comment
К сожалению, это не работает. Как только объект создан, кажется, что ничто не может его изменить. - person Moop; 29.08.2011

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

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

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

person jjmontes    schedule 30.08.2011