Нет ошибки 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 ).