Определить, когда Path2D с SVG-строкой поддерживается - PullRequest
0 голосов
/ 15 декабря 2018

Похоже, Microsoft Edge частично поддерживает Path2D API - он не поддерживает использование строк пути SVG, т. Е.

const path = new Path2D('M20 L30');

Есть ли способ, позволяющий определить, является ли илине проход в SVG путях поддерживается?

1 Ответ

0 голосов
/ 15 декабря 2018

Нет ошибки catchable , которая выдается в этом случае, и передача неверной строки не выдает также в поддерживающих браузерах. (Это звучит как поток спецификаций для меня, кстати ...)

Таким образом, чтобы можно было определить точный случай поддерживаемого конструктора, но аргументигнорируясь, мы должны на самом деле проверить, нарисовано ли что-то или нет ...

Вы можете сделать это, поглаживая простой M0,0H1 Path2D, а затем проверить, находится ли пиксель в координатах 0,0 ваш контекст был нарисован.

function supports() {
  // no simple support
  if (typeof Path2D !== 'function') return false;
  // create a new context
  var x = document.createElement('canvas')
    .getContext('2d');
  // stroke a simple path
  x.stroke(new Path2D('M0,0H1'));
  // check it did paint something
  return !!x.getImageData(0, 0, 1, 1).data[3];
};

console.log(supports());

Но учтите, что Edge, похоже, не поддерживает ни метод Path2D.addPath () , поэтому, если вы включитеПолифилл, как у Google canvas-5-polyfill , который включает в себя полифилл Path2D, тогда весь Path2D будет использовать полизаполненную версию (поскольку они также проверяют поддержку addPath ).

...