Подобно тому, как многие операции в контексте, неправильно вход в globalCompositeOperation просто игнорируется, поэтому очень легко увидеть, поддерживается ли данный режим: просто установите его, затем прочитайте текущий режим, чтобы проверить, что он предоставлен.
Так просто быть ясно, вы могли бы использовать некоторые функции как этот:
// setCompositeMode : sets the globalCompositeOperation on provided context.
// return true if mode is supported, false otherwise.
function setCompositeMode(ctx, newMode) {
ctx.globalCompositeOperation = newMode;
return (ctx.globalCompositeOperation == newMode) ;
}
лишь небольшой пример:
var cv=document.createElement('canvas');
var ctx= cv.getContext('2d');
console.log(" Current (default) composite mode : " + ctx.globalCompositeOperation) ;
console.log("setting 'destination-in'.");
ctx.globalCompositeOperation = 'destination-in';
console.log(" composite mode : " + ctx.globalCompositeOperation) ;
console.log("setting 'multiply'.");
ctx.globalCompositeOperation = 'multiply';
console.log(" composite mode : " + ctx.globalCompositeOperation) ;
console.log("setting 'i-don-t-exist' .");
ctx.globalCompositeOperation = 'i-don-t-exist';
console.log(" composite mode : " + ctx.globalCompositeOperation) ;
выход (на Chrome/Mac OS, поддержка умножения):
" Current (default) composite mode : source-over"
"setting 'destination-in'."
" composite mode : destination-in"
"setting 'multiply'."
" composite mode : multiply"
"setting 'i-don-t-exist' ."
" composite mode : multiply"
До сих пор мобильные браузеры по-прежнему не поддерживают значение «умножить» ??? Имея проблемы даже сегодня в 2016 году, чтобы получить тот же эффект от рабочего стола на устройствах ios (совсем не отображается на сафари ios и хром) – bigp